繁体   English   中英

如何在python中将两列csv文件转换为字典

[英]How to convert a two column csv file to a dictionary in python

我有以下 csv:

Name1    Name2

JSMITH    J Smith
ASMITH    A Smith

如何将其读入字典以便输出为

dict = {'JSMITH':'J Smith', 'ASMITH': 'A Smith'}

我用过了:

df= pd.read_csv('data.csv')

data_dict = df.to_dict(orient='list')

但它给了我

{'Name1': ['JSMITH','ASMITH'],'Name2': ['J Smith', 'A Smith']}

然后我希望在pandasmap功能中使用它,例如:

df2['Name'] = df2['Name'].replace(data_dict, regex=True)

任何帮助将非常感激!

如果您总是只有两列,请注意:

dict(df.itertuples(False,None))

或者使它成为pandas.Series并使用to_dict

df.set_index("Name1")["Name2"].to_dict()

输出:

{'ASMITH': 'A Smith', 'JSMITH': 'J Smith'}

请注意,如果您需要一个映射到pd.Series.replace的映射器,则Seriesdict一样pd.Series.replace

s = df.set_index("Name1")["Name2"]
df["Name1"].replace(s, regex=True)

0    J Smith
1    A Smith
Name: Name1, dtype: object

这也意味着您可以删除to_dict并减少一些开销:

large_df = df.sample(n=100000, replace=True)

%timeit large_df.set_index("Name1")["Name2"]
# 4.76 ms ± 1.09 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit large_df.set_index("Name1")["Name2"].to_dict()
# 20.2 ms ± 976 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

您可以使用zipdict

dict(zip(df.Name1, df.Name2))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM