簡體   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