熊猫:列的值,然后按相同的 ID 分组和合并

纳努克

我有一个这样的数据框

df = DataFrame({'Id':[1,2,3,3,4,5,6,6,6],
             'Type': ['T1','T1','T2','T3','T2','T1','T1','T2','T3'],
             'Duration':[5,10,5,7,5,10,15,20,15]})
df
   Id   Type    Duration
0   1   T1      5
1   2   T1      10
2   3   T2      5
3   3   T3      7
4   4   T2      5
5   5   T1      10
6   6   T1      15
7   6   T2      20
8   6   T3      15

我想根据来自的唯一值和来自Type的值创建新列Duration,然后为每个 Id 设置一行

col_list = df.Type.unique().tolist()
df[col_list] = nan

def fill_values(duration):
    return duration

for col in col_list:
    df[col] = df['Duration'].loc[df['Type'] == col].apply(fill_values)

Output:
    Id  Type    Duration    T1  T2  T3
0   1   T1      5           5.0 NaN NaN
1   2   T1      10          10.0 NaN NaN
2   3   T2      5           NaN 5.0 NaN
3   3   T3      7           NaN NaN 7.0
4   4   T2      5           NaN 5.0 NaN
5   5   T1      10          10.0 NaN NaN
6   6   T1      15          15.0 NaN NaN
7   6   T2      20          NaN 20.0 NaN
8   6   T3      15          NaN NaN 15.0

Q1:有没有更好的方法来做到这一点

Q2:如何将相同的行合并Id为一个?

预期输出:

   Id   T1  T2  T3
0   1   5   NaN NaN 
1   2   10  NaN NaN 
2   3   NaN 5   7
3   4   NaN 5   NaN 
4   5   10  NaN NaN 
5   6   15  20   15

任何帮助表示赞赏。

adhg

Q1:有没有更好的方法来做这个 Blockquote

A1:是的,使用pivot_table

Q2:如何将具有相同 ID 的行合并为一个?

A2:像这样:

df = df.pivot_table(index='Id',columns='Type',values='Duration').rename_axis(None, axis=1).reset_index() 



expected result:

    Id  T1     T2      T3
0   1   5.0    NaN     NaN
1   2   10.0   NaN     NaN
2   3   NaN    5.0     7.0
3   4   NaN    5.0     NaN
4   5   10.0   NaN     NaN
5   6   15.0   20.0    15.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫分组和合并行

使用LINQ从单个列表中分组和合并多个值

MySQL按标题排序,然后按分组ID

MongoDB按ID然后按日期分组

大熊猫:按两列分组,然后按第三列的值对其进行排序

跨列计算值,然后按年份对熊猫进行分组

检查更大的行值,然后将每个具有相同值的行按ID分组

在同一列表中分组和合并元素

使用Python中的itertools / more-itertools对多列列表的项目进行分组和合并

计数不同的ID,然后按不同的ID分组,从而产生不正确的计数

熊猫分组计数,然后按条件均值

熊猫数据减少和合并

对对象数组进行排序,然后按ID分组(JavaScript)

如何首先按ID然后按发布日期对python列表进行分组

首先按C列分组,然后按A列分组

如何选择多个计数(*)值然后按特定列分组

从特定列中找到最大值,然后按它们分组

如何对数组条目进行分组和合并,并对多个常见(但不是全部)键的值求和?

Spark-按键分组,然后按值计数

按每个ID的最大日期排序,然后按相同的ID排序其他记录,然后按其最大日期排序其他ID

MongoDB聚合-按_id分组,然后按另一个字段划分优先级

熊猫分组然后使用多列合并

熊猫:按ID分组并删除包含最多NaN值的行

根据一列中的值拆分一个csv,然后按行合并/绑定输出

转置和合并熊猫数据框

熊猫,fillna / bfill联合和合并领域

扩展和合并熊猫数据框

SQL语句的唯一ID,然后按唯一ID分组并计算一个不同的其他ID组

熊猫分组并计数,然后按分组大小对整个数据框进行升序排序?