【发布时间】:2022-01-24 02:56:36
【问题描述】:
我需要根据不同列中的匹配来填充列。
数据帧:
df = pd.DataFrame(np.array([[1000, 'Jerry', 'BR1','BR1'],
[1001, 'Sal', 'BR2', 'BR1'],
[1002, 'Buck', 'BR3', 'BR2'],
[1003, 'Perry','BR4','BR1']]),
columns=['ID', 'Name', 'Branch', 'Member of'])
我需要创建一个“老板”列。
- boss 定义为将
Member of与Branch列中的某个字段匹配后返回的Name。
我可以这样做:
df_bosses = df[['Name', 'Branch']].copy()
df_bosses.rename(columns={'Name':'Boss'},inplace=True)
df.merge(df_bosses, how="left", left_on="Member of", right_on="Branch")
这让我到达了我想去的地方——只需要重命名一列并删除另一列。
有没有更有效的方法?
【问题讨论】:
-
题外话,但你为什么使用 NumPy 数组?它不会添加任何 AFAIK,它会生成整数列
object而不是int64,如果需要,您可以通过其他更清晰的方式来实现。 -
是的,@EA 你可以完全省略
np.array(部分,只使用列表。