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