[英]Dataframe - Merge columns from csv and excel file
嗨,堆栈溢出社区,
我在excel中有以下数据框:
sparte sparten status stati gesellschaft gesellschaften
10 Krankenvoll B beantragt 0 - Allgemein -
11 Reisekranken A aktiv 10000 nordinvest
12 Krankenkasse N beitragsfrei M552D SV SparkassenVersicherung
以及用于在 csv 中合并的以下列:
sparten status gesellschaft
10 B 0
11 A 10000
12 N M552D
要合并 excel 和 csv 文件中的一些列,我使用以下代码:
df1 = pd.read_csv(r'path', sep=',').drop(columns = ['risiko'])
df2 = pd.read_excel(r'path')
df3 = pd.merge(df1,df2[['status','stati']],on='status', how='left').drop(columns = ['status'])
df4 = df3.merge(df2[['sparte','sparten']],on='sparte', how='left').drop(columns = ['sparte'])
它对我来说很好,但现在我想合并以下列:
df4 = df3.merge(df2[['gesellschaft','gesellschaften']],on='gesellschaft', how='left')
print(df4)
......它不起作用。 它仅合并具有此格式M552D
的单元格,但保留带有数字的单元格不变。 我不明白我做错了什么。 如果我尝试将how='right'
合并工作,但其他列消失。
也许有人知道这里发生了什么! 感谢您的任何提示!
问题是geselschaft
列仅包含用read_csv
加载的df1
中的字符串,因为该列不是完全数字的。 但是在加载了read_excel
的df2
中,它包含 int 和 string 值的混合。 在 Pandas 级别,int 和字符串不能相等。
一种可能的解决方法是在合并时强制进行字符串转换:
df4 = df3.merge(df2[['gesellschaft','gesellschaften']], left_on='gesellschaft',
right_on = df2['gesellschaft'].astype('str'), how='left')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.