首页 > 解决方案 > 仅当字符串与另一列匹配时,如何从一列添加?

问题描述

仅当它与另一列中的字符串匹配时才尝试将一列中的数字相加,例如当 col1 为 A 时在 col2 中添加整数。

import pandas as pd
d = {'col1': ['A', 'B', 'A', 'B'], 'col2': [1, 2, 1, 2]}
df = pd.DataFrame(data=d)
df

标签: pythonpandasdataframe

解决方案


使用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

推荐阅读