【问题标题】:appending data to existing dataframe without creating a new object in pandas将数据附加到现有数据框而不在熊猫中创建新对象
【发布时间】:2020-08-06 13:03:49
【问题描述】:

我有 2 个数据框 df1 有 3 列 cust_id,first name, last name df2 有 1 列 cust_id

对于 df2 中的每一行,我想从 df1 中提取数据并附加到 df3, df3 有 3 列 cust_id,first name, last name

我试过了

for i,r in df2.iterrows():
    data = df1[df1[cust_id]==r]
    pandas.concat(data,df3)

上面给了我错误:第一个参数必须是可迭代的 pandas 对象,你传递了一个“DataFrame”类型的对象

我试过其他的

for i,r in df2.iterrows():
     data = df1[df1[cust_id]==r]
     df3.append(data)

此代码正在创建除 df3 之外的新数据框

如何在不创建新对象的情况下实现这一点?

【问题讨论】:

  • df3的列有哪些?
  • 它们是与 df1 相同的列

标签: pandas dataframe


【解决方案1】:

错误再清楚不过了:正如您在docs 中看到的,pd.concat 接收一个可迭代的和其他附加参数,但是您传递了一个数据帧(data)作为第一个参数和另一个数据帧( df3) 作为另一个参数,而不是与要连接的数据帧的迭代,因此您应该将 pandas.concat(data,df3) 更改为 pandas.concat([data,df3])。作为建议,为了避免使用iterrows,您可以尝试使用pd.Series.isin:

pd.concat([df1[df1['cust_id'].isin(df2['cust_id'])],df3])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-01
    • 2019-01-14
    • 2020-03-13
    • 1970-01-01
    • 2018-02-08
    • 2017-06-13
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多