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