我有一个pandas数据框,我想从列中获取值,只有当这些条目的日期列和编号列匹配时才连接它们。这是数据表的示例
No. Date Code
121 1-Jul-15 AT
122 2-Jul-17 PN
122 2-Jul-17 WX
122 3-Jul-17 FX
输出应该是这样的
No. Date Code Output
121 1-Jul-15 AT AT
122 2-Jul-17 PN PN/WX
122 2-Jul-17 WX PN/WX
122 3-Jul-17 FX FX
我有近172355行,我希望这个操作发生。
这是我尝试过的基本伪代码
for i in 1 to len(df)
if date & no is same
concatenate code to new column of only same rows
else
copy code to new column as it is
i = i+1
end for
请帮我用pandas中的python代码获取此输出。
我相信你需要transform
为原始DataFrame
的新专栏:
df['new'] = df.groupby(['No.','Date'])['Code'].transform('/'.join)
print (df)
No. Date Code new
0 121 1-Jul-15 AT AT
1 122 2-Jul-17 PN PN/WX
2 122 2-Jul-17 WX PN/WX
3 122 3-Jul-17 FX FX
因为如果使用apply
然后汇总输出:
df1 = df.groupby(['No.','Date'])['Code'].apply('/'.join).reset_index(name='new')
print (df1)
No. Date new
0 121 1-Jul-15 AT
1 122 2-Jul-17 PN/WX
2 122 3-Jul-17 FX