Python 熊猫地图 CSV 文件

Posted

技术标签:

【中文标题】Python 熊猫地图 CSV 文件【英文标题】:Python pandas map CSV file 【发布时间】: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=";")

谁能帮帮我?

【问题讨论】:

Dataframe.join 是您要查找的内容:pandas.pydata.org/pandas-docs/stable/generated/… 【参考方案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>

【讨论】:

以上是关于Python 熊猫地图 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

python 熊猫从csv文件中获取价格数据

无法使用熊猫在 python3 中加载 csv 文件

Python:使用熊猫从csv文件中提取特定列(包含特殊字符)

Python3 - 使用熊猫将 csv 转换为 json

无法让熊猫打开 CSV [Python, Jupyter, Pandas]

在熊猫中打开损坏的csv文件的策略