将具有相同ID的行拆分为不同的列python

时间:2019-04-16 17:22:44

标签: python-3.x pandas

我想要一个具有重复值且具有相同ID号的数据框。但我想将重复的行拆分为列。

data = [[10450015,4.4],[16690019  4.1],[16690019,4.0],[16510069  3.7]]
df = pd.DataFrame(data, columns = ['id', 'k'])  
print(df)

结果数据帧将具有n_k(n = id行的重复值)。重复的ID将获得一个单独的名称,当它没有重复的ID时,它将在新名称中获得一个0。

data_merged = {'id':[10450015,16690019,16510069], '1_k':[4.4,4.1,3.7], '2_k'[0,4.0,0]}
print(data_merged)

1 个答案:

答案 0 :(得分:2)

尝试使用DataFrame.assigngroupby.cumcount,然后使用DataFrame.pivot_table辅助列idx ref。最后,使用列表推导对列名称进行排序:

df_new = (df.assign(col=df.groupby('id').cumcount().add(1))
          .pivot_table(index='id', columns='col', values='k', fill_value=0))

df_new.columns = [f"{x}_k" for x in df_new.columns]

print(df_new)

          1_k  2_k
id                
10450015  4.4    0
16510069  3.7    0
16690019  4.1    4