繁体   English   中英

如何在 Pyhton 中将两组数据与 Pandas 合并而不丢失行?

[英]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.

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