我有一个包含1064条记录的dataframe1和一个包含328条记录的dataframe2。我想将dataframe2合并到dataframe1中。dataframe在第二个df中没有相应数据的其余记录应该用文本"NA“填充。例如
DF1
Name Area Totalcases
Name1 Area1 200
Name2 Area2 300
Name3 Area2 100
Name3 Area3 0
DF2
Name Area Seriouscases Othercases
Name1 Area1 50 150
Name2 Area2 100 200
Name3 Area2 150 150
期望输出
Name Area Totalcases Seriouscase Othercases
Name1 Area1 200 50 150
Name2 Area2 300 100 200
Name3 Area2 100 150 150
Name3 Area3 0 NA NA
我使用以下命令来完成工作
df = pd.merge(readCSV1, readCSV2, on=['Name', 'Area'], how='left').fillna(method='ffill')
但我面临的问题是,名称列中通常有几个相似的名称,并且通常即使在第二个文件中没有相应的数据,也会填充具有相似名称的数据。如何确保只有在名称和区域都匹配的情况下才合并数据相应的数据才会合并,或者如果数据在第二个df中不可用来填充"NA“
发布于 2020-10-22 13:00:59
试试这个:
import pandas as pd
df1 = pd.DataFrame({
'Name': ['Name1', 'Name2', 'Name3', 'Name3'],
'Area': ['Area1', 'Area2', 'Area2', 'Area3'],
'Totalases': [200, 300, 100, 0]
})
df2 = pd.DataFrame({
'Name': ['Name1', 'Name2', 'Name3'],
'Area': ['Area1', 'Area2', 'Area2'],
'Seriouscases': [50, 100, 150],
'Othercases': [150, 200, 150]
})
new_df = pd.merge(df1, df2, how='left')
print(new_df)
打印:
Name Area Totalases Seriouscases Othercases
0 Name1 Area1 200 50.0 150.0
1 Name2 Area2 300 100.0 200.0
2 Name3 Area2 100 150.0 150.0
3 Name3 Area3 0 NaN NaN
如果这对你有帮助,请让我知道。
https://stackoverflow.com/questions/64482576
复制相似问题