我想要一个具有重复值且具有相同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)
答案 0 :(得分:2)
尝试使用DataFrame.assign
和groupby.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