我有两个数据帧.对于dataframe2中的每一行,我想查看dataframe1是否已经有一行在‘name’列中具有相同的值.如果是这样的话,我想把dataframe2中行中的数据添加到dataframe1中的相应行中.列‘name’中的值不应该跨行相加.史蒂夫不应该被复制,鲍勃不应该添加新的数据.


df1 = pd.DataFrame([{'name': 'Ben', 'goals': 1, 'minutes': 90},
                    {'name': 'Bob', 'goals': 1, 'minutes': 64},
                    {'name': 'Kevin', 'goals': 1, 'minutes': 90}])

df2 = pd.DataFrame([{'name': 'Ben', 'goals': 1, 'minutes': 88},
                    {'name': 'Kevin', 'goals': 1, 'minutes': 3},
                    {'name': 'Steve', 'goals': 1, 'minutes': 13}])

最终输出应为:

name goals minutes
Ben 2 178
Bob 1 64
Kevin 2 93

这就是我试过的

for index, row in df1.iterrows():
    if df2.isin([row['name']]).any().any():
        position = int(df2[df2['name'] == str(row['name'])].index.values)
        df1.iloc[index, 1:] = df1.iloc[index, 1:] + df2.iloc[position, 1:]

推荐答案

  1. 连接df1+df2减go 名称不在df1中的行;
  2. name分组;
  3. 将各组数值相加;
  4. 重置索引.
df = pd.concat([df1, df2.loc[df2["name"].isin(df1["name"])]]).groupby("name").sum().reset_index()

结果:

    name  goals  minutes
0    Ben      2      178
1    Bob      1       64
2  Kevin      2       93

Python相关问答推荐

比较两个二元组列表,NP.isin

仅从风格中获取 colored颜色 循环

提取两行之间的标题的常规表达

使用numpy提取数据块

如何根据参数推断对象的返回类型?

标题:如何在Python中使用嵌套饼图可视化分层数据?

用合并列替换现有列并重命名

DataFrames与NaN的条件乘法

交替字符串位置的正则表达式

Cython无法识别Numpy类型

以异步方式填充Pandas 数据帧

不允许 Select 北极滚动?

如果有2个或3个,则从pandas列中删除空格

在极点中读取、扫描和接收有什么不同?

read_csv分隔符正在创建无关的空列

pytest、xdist和共享生成的文件依赖项

查找查找表中存在的列值组合

将数字数组添加到Pandas DataFrame的单元格依赖于初始化

上传文件并使用Panda打开时的Flask 问题

如何计算Pandas 中具有特定条件的行之间的天差