熊猫根据列的每个唯一元素添加行

时间:2018-11-13 13:22:27

标签: python pandas

我有一个数据框,就像这样:

ID A 
0  z
2  z
2  y
5  x

我要为ID列的每个唯一值添加行:

ID A
0  z
2  z
2  y
5  x
0  b
2  b
5  b

我目前正在以一种非常幼稚的方式进行操作,这种方式效率很低/很慢:

IDs = df["ID"].unique()
for ID in IDs: 
    df = df.append(pd.DataFrame([[ID, "b"]], columns=df.columns), ignore_index=True)

如果没有显式的foreach(仅熊猫函数调用),我将如何完成相同的任务?

1 个答案:

答案 0 :(得分:0)

使用drop_duplicates,将列assignappendconcat重写为原始DataFrame

df = df.append(df.drop_duplicates("ID").assign(A='B'), ignore_index=True)
#alternative
#df = pd.concat([df, df.drop_duplicates("ID").assign(A='B')], ignore_index=True)
print (df)
   ID  A
0   0  z
1   2  z
2   2  y
3   5  x
4   0  B
5   2  B
6   5  B