簡體   English   中英

大熊貓-根據“下一個”行值創建新列

[英]pandas - create new column based off of 'next' row value

我有以下數據框:

   date      country   
   6/1/18    USA
   6/1/18    BEL
   6/4/18    USA
   6/5/18    BEL
   6/6/18    USA

我想創建一個列,告訴您相應國家/地區的下一個日期。 如果有幫助,您可以假定日期已排序。 如果日期是該國家/地區的最后日期,則可以使用相同的日期或空值填寫下一個日期。

   date      country   next_date
   6/1/18    USA       6/4/18
   6/1/18    BEL       6/5/18
   6/4/18    USA       6/6/18
   6/5/18    BEL       6/5/18
   6/6/18    USA       6/6/18

您可以使用groupbyshift來填充下一個可用值,但是,這將使行沒有下一個可用日期,即NaN

df.assign(ndate=df.groupby('country').date.shift(-1))

     date country   ndate
0  6/1/18     USA  6/4/18
1  6/1/18     BEL  6/5/18
2  6/4/18     USA  6/6/18
3  6/5/18     BEL     NaN
4  6/6/18     USA     NaN

如果您想填寫與上次看到日期這些值,你可以簡單地fillnadate列:

df.assign(ndate=df.groupby('country').date.shift(-1)).fillna({'ndate': df.date})

     date country   ndate
0  6/1/18     USA  6/4/18
1  6/1/18     BEL  6/5/18
2  6/4/18     USA  6/6/18
3  6/5/18     BEL  6/5/18
4  6/6/18     USA  6/6/18

您也可以使用transform 我選擇將最終日期保留為NaN值。

>>> df.assign(next_date=df.groupby('country')['date'].transform(
                  lambda group: group.shift(-1)))
     date country next_date
0  6/1/18     USA    6/4/18
1  6/1/18     BEL    6/5/18
2  6/4/18     USA    6/6/18
3  6/5/18     BEL       NaN
4  6/6/18     USA       NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM