python - 仅当字符串与另一列匹配时,如何从一列添加?
问题描述
仅当它与另一列中的字符串匹配时才尝试将一列中的数字相加,例如当 col1 为 A 时在 col2 中添加整数。
import pandas as pd
d = {'col1': ['A', 'B', 'A', 'B'], 'col2': [1, 2, 1, 2]}
df = pd.DataFrame(data=d)
df
解决方案
使用DataFrame.loc
+GroupBy.transform
df.loc[df.col1.eq('A'), 'col2'] = df.groupby('col1')['col2'].transform('sum')
print(df)
或者
new_df = df.assign(col2=df.groupby('col1')['col2'].transform('sum').where(df.col1.ne('A'),
df.col1))
输出
col1 col2
0 A 2
1 B 2
2 A 2
3 B 2
推荐阅读
- c# - 额外的方括号被添加到 JSON 输出的数组中
- javascript - 如何使用 Vue js 中的 paypal/stripe 等付款方式收费?我需要像express这样的服务器吗?
- performance - PerfView Callers 显示“Root”,为什么?
- python - 从具有大于 5 个缺失值的行中删除缺失值,然后打印每列中缺失值的百分比
- c++ - 新运算符 C++17 中的对齐 - Visual Studio
- docker - CoreOS - 将主机端口暴露给 VPN
- java - 断言抛出多个异常
- c# - 如何在 C# 中使用 Quartz.net 安排作业(方法)?
- haskell - 在最后一次递归之前忽略类型声明
- javascript - 在 mousedown 上将变量设置为负值