【问题标题】:I want to merge a DataFrame with a CSV我想将 DataFrame 与 CSV 合并
【发布时间】:2019-02-08 15:35:33
【问题描述】:

我需要将 1 个 df 与 1 个 csv 合并。 df1 仅包含 1 列(我要更新的产品的 ID 列表) df2 包含 2 列(所有产品的 id、数量)

df1=pd.read_csv(id_file, header=0, index_col=False)
df2 = pd.DataFrame(data=result_q)
df3=pd.merge(df1, df2)

我想要的:只包含来自 csv/df1 的 id 的数据框与相同 id 的 df2 的数量合并

【问题讨论】:

  • 你能提供输入数据的例子和你想要的输出例子吗?

标签: python pandas


【解决方案1】:

如果你只想要你在第一个 data_frame 中拥有的产品,你可以使用这个:

df_1
Out[11]: 
   id
0   1
1   2
2   4
3   5

df_2
Out[12]: 
   id prod
0   1    a
1   2    b
2   3    c
3   4    d
4   5    e
5   6    f
6   7    g
7   8    h

df_3 = df_1.merge(df_2,on='id')
df_3
Out[14]: 
   id prod
0   1    a
1   2    b
2   4    d
3   5    e

您需要使用参数 on='column',以便仅使用具有相同 id 的对应行生成新的 df。

【讨论】:

  • 我收到以下错误消息:您正在尝试合并 int64 和对象列
【解决方案2】:

你可以使用new_df= pd.merge(df1,df2, on=['Product_id'])

【讨论】:

  • 我收到以下错误消息:您正在尝试合并 int64 和对象列
  • 尝试通过pd.to_numeric(s)将对象df转换为数字
【解决方案3】:

我找到了解决方案。我需要为我的 df2 重置索引

df1=pd.read_csv(id_file)
df2 = pd.DataFrame(data=result_q).reset_index()

df1['id'] = pd.to_numeric(df1['id'], errors = 'coerce')
df2['id'] = pd.to_numeric(df2['id'], errors = 'coerce')



df3=df1.merge(df2, on='id')

谢谢大家!

【讨论】:

    猜你喜欢
    • 2014-05-12
    • 2023-03-11
    • 2016-04-01
    • 2019-11-10
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 2019-05-23
    • 2019-02-24
    相关资源
    最近更新 更多