我有这样的df,
df = pd.DataFrame({
"Name" : ["A","B","C","D","E","F","G"],
"part number" : ["1","3","2","1","5","1","2"],
"detail1" : ["A","C","B","B","E","E","E"],
"detail2" : ["one","three","two","two","five","five","five"]
})
df
Name part number detail1 detail2
A 1 A one
B 3 C three
C 2 B two
D 1 B two
E 5 E five
F 1 E five
G 2 E five
我想按零件号分组并用第一行值填充detail1和detail2。
我的预期输出,
Name part number detail1 detail2
A 1 A one
B 3 C three
C 2 B two
D 1 A one
E 5 E five
F 1 A one
G 2 B two
我尝试了df.groupby("part number")[["detail1","detail2"]].first()
,但没有给出预期的输出,请提供帮助。
答案 0 :(得分:4)
在groupby
上使用part number
并转换列detail1
,并使用detail2
将first
转换为df
的转换列:>
cols = ['detail1', 'detail2']
df[cols] = df.groupby('part number')[cols].transform('first')
结果:
print(df)
Name part number detail1 detail2
0 A 1 A one
1 B 3 C three
2 C 2 B two
3 D 1 A one
4 E 5 E five
5 F 1 A one
6 G 2 B two