【问题标题】:Python pandas map CSV filePython 熊猫地图 CSV 文件
【发布时间】:2018-05-28 21:23:28
【问题描述】:

我想“合并”两个 CSV 文件。我想映射文件 1 中的电子邮件并从文件 2 中获取它们各自的用户 ID,然后我想将其分配给文件 1 的相应电子邮件

例子:

文件 1

name, userId, email
john, null, john@a.com
alex, null, alex@a.com
micheal, null, mike@a.com
alex, null, alex@a.com
john, null, john@a.com

文件 2

name, userId, email
alex, 5, alex@a.com
micheal, 10, mike@a.com
john, 12, john@a.com

输出文件

name, userId, email
john, 12, john@a.com
alex, 5, alex@a.com
micheal, 10, mike@a.com
alex, 5, alex@a.com
john, 12, john@a.com

这是我的代码,但这并没有分配相应电子邮件的 userId,因为电子邮件没有排序

import pandas as pd

df1 = pd.read_csv("file1.csv", sep=",")
df2 = pd.read_csv("file2.csv", sep=",", index_col=0)

df1["userId"] = df2["userId"].values

df1.to_csv("output.csv", sep=";")

谁能帮帮我?

【问题讨论】:

标签: python pandas csv dictionary


【解决方案1】:

Dataframe.merge

df1 = pd.read_csv("file1.csv", sep=",")
df1.columns = ['name', 'userid', 'email']
df2 = pd.read_csv("file2.csv", sep=",", index_col=0)
df1 = df1.drop(['userId'], axis=1)

result = pd.merge(df1, df2, on=['name','email'], how='right')

result.to_csv("output.csv", sep=";")

我是如何测试的:

import pandas as pd

df1 = pd.DataFrame({'name': ['john', 'alex', 'michael', 'alex', 'john'],
                    'userId': ['null', 'null', 'null', 'null', 'null'],
                    'email': ['john@a.com', 'alex@a.com', 'mike@a.com', 'alex@a.com', 'john@a.com']
                    }, columns=['name','userId','email'])

df2 = pd.DataFrame({'name': ['alex', 'michael', 'john'],
                    'userId': ['5', '10', '12'],
                    'email': ['alex@a.com', 'mike@a.com', 'john@a.com']
                    })

df1 = df1.drop(['userId'], axis=1)

result = pd.merge(df1, df2, on=['name','email'], how='right')

print(df1)
print(df2)

print(result)

【讨论】:

  • 我没有得到预期的输出,你能试试吗?
  • 切换到合并方法,希望对你有用!将 how='outer' 更改为 how='inner' 以获取仅长度为 df2 的列表。
【解决方案2】:

所以我认为如果你从文件 1 中删除用户 ID 字段并从文件 2 中删除名称。然后合并电子邮件地址上的两个数据框,你应该得到 ​​p>

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    相关资源
    最近更新 更多