我有一个数据框,就像这样:
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(仅熊猫函数调用),我将如何完成相同的任务?
答案 0 :(得分:0)
使用drop_duplicates
,将列assign
和append
或concat
重写为原始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