[英]How do I merge two sets of data with Pandas in Pyhton without losing rows?
我在 Python 中使用 Pandas 来比较两个数据帧。 我想将数据从一组匹配到另一组。
Dataframe 1
名称 |
---|
山姆 |
麦克风 |
约翰 |
马修 |
标记 |
Dataframe 2
名称 | 数字 |
---|---|
麦克风 | 76 |
约翰 | 92 |
标记 | 32 |
这是我想要得到的 output:
名称 | 数字 |
---|---|
山姆 | 0 |
麦克风 | 76 |
约翰 | 92 |
马修 | 0 |
标记 | 32 |
目前我正在这样做
df1 = pd.read_csv('data_frame1.csv', usecols=['Name', 'Number'])
df2 = pd.read_csv('data_frame2.csv')
df3 = pd.merge(df1, df2, on = 'Name')
df3.set_index('Name', inplace = True)
df3.to_csv('output.csv')
但是,这是删除没有编号的名称。 我想保留它们并将 0 分配给它们。
您可以使用pd.merge(..., , how = 'outer')
这保留所有行并为它们插入Nan
然后使用.fillna(0)
并为Nan
插入0
:
>>> pd.merge(df1, df2, on = 'Name', how = 'outer').fillna(0)
Name Number
0 Sam 0
1 Mike 76
2 John 92
3 Matthew 0
4 Mark 32
使用pd.merge(..., , how = 'outer')
你考虑两个 DataFrame 如果你想要 megre 一个 DataFrame 和另一个你可以像下面这样合并,看这个例子:
>>> df1 = pd.DataFrame({'Name': ['Mike','John','Mark','Matthew']})
>>> df2 = pd.DataFrame({'Name': ['Mike','John','Mark', 'Sara'], 'Number' : [76,92,32,50]})
>>> pd.merge(df1, df2, on='Name', how='outer').fillna(0)
Name Number
0 Mike 76.0
1 John 92.0
2 Mark 32.0
3 Matthew 0.0
4 Sara 50.0
>>> df1.merge(df2,on='Name', how='left').fillna(0)
Name Number
0 Mike 76.0
1 John 92.0
2 Mark 32.0
3 Matthew 0.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.