繁体   English   中英

将列添加到 Pandas dataframe,合并重复行

[英]Add column to Pandas dataframe, merging repeated rows

我有一些看起来像这样的数据:

City         1994 1995  1996  1997                           
Rome            X  NaN   NaN   NaN
New York      NaN  NaN   NaN   NaN
Paris         NaN    X   NaN   NaN
Sidney        NaN  NaN   NaN   NaN

十字架表示该城市在该特定年份发生了事件。 我想在我的数据框中添加新的年份,其中的数据如下所示:

City         1998                           
Rome            X
Sidney          X
London          X
Madrid          X

基本上,新数据表明事件在新的不同年份发生在哪里(所以它总是有“X”)。 我正在寻找的结果应该是这样的:

City         1994 1995  1996  1997   1998                          
Rome            X  NaN   NaN   NaN      X
New York      NaN  NaN   NaN   NaN    NaN
Paris         NaN    X   NaN   NaN    NaN
Sidney        NaN  NaN   NaN   NaN      X
London        NaN  NaN   NaN   NaN      X
Madrid        NaN  NaN   NaN   NaN      X

因此,它应该将新的不存在的城市添加到城市列表中,并将 NaN 表示为该城市已经存在的年份,并在新添加的年份表示事件发生的城市。

我尝试使用df.append()但我得到了重复值

City         1994 1995  1996  1997   1998                           
Rome            X  NaN   NaN   NaN    NaN
New York      NaN  NaN   NaN   NaN    NaN
Paris         NaN    X   NaN   NaN    NaN
Sidney        NaN  NaN   NaN   NaN    NaN
Rome          NaN  NaN   NaN   NaN      X
Sidney        NaN  NaN   NaN   NaN      X
London        NaN  NaN   NaN   NaN      X
Madrid        NaN  NaN   NaN   NaN      X

我也尝试使用df.merge()但没有得到更好的结果。 关于如何使用 pandas 的任何建议? 我可以编写一些代码来手动完成,但这违背了使用如此强大工具的目的。

您可以使用df.merge()来实现这一点。

import pandas as pd

data = [['Rome','X',  None,   None,   None],['New York' ,None,  None,   None,   None], ['Paris',None,  'X',   None,   None]]
df = pd.DataFrame(data, columns = ['City','1994', '1995',  '1996' , '1997' ])

df.head()

       City  1994  1995  1996  1997
0      Rome     X  None  None  None
1  New York  None  None  None  None
2     Paris  None     X  None  None

df2 = pd.DataFrame([['Rome', 'X', ],['Sydney','X'], ['London','X']], columns = ['City',         '1998'])

     City 1998
0    Rome    X
1  Sydney    X
2  London    X

然后可以合并两个DataFrame

df.merge(df2, how='outer')

       City  1994  1995  1996  1997 1998
0      Rome     X  None  None  None    X
1  New York  None  None  None  None  NaN
2     Paris  None     X  None  None  NaN
3    Sydney   NaN   NaN   NaN   NaN    X
4    London   NaN   NaN   NaN   NaN    X

您需要将外部指定为要执行的合并类型。

外部:使用来自两个框架的键的联合,类似于 SQL 完全外部连接; 按字典顺序对键进行排序。

暂无
暂无

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

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