我有一個看起來像的資料集
A B year CompanyName
1 nan 1999 tesla
4 3 2000 tesla
Nan nan 2001 tesla
2 nan 2002 tesla
3 nan 1999 BMW
2 -1 2000 BMW
2 nan 2002 BMW
所以我有不同的公司資料,我想計算一個新的 B 列,它等于當前行與 A 列前一行之間的差異,遵循以下條件:
- 僅當兩個連續年份都具有有效值時才進行差異,如果缺少一年,則不應計算差異
- 如果缺少 A 的公司年份值之一,則差異列將采用 nan 值
- 必須為同一家公司做差異,因此我不希望為不同的公司做差異
我寫了這段代碼:
finalData[~(finalData.year.diff(1).isnull()) & (finalData.year.diff(1) ==1) &
(finalData.companyName)]
但我堅持使用 companyName 條件,感謝您的時間和幫助
附言。我根據 CompanyName 然后年份訂購我的資料以產生這種奇怪的差異
uj5u.com熱心網友回復:
假設您的資料按年份排序(如果不使用df = df.sort_values(by='year')),您可以執行以下操作:
g = df.groupby('CompanyName')
df['B'] = g['A'].diff().where(df['year'].eq(g['year'].shift() 1))
輸出:
A B year CompanyName
0 1.0 NaN 1999 tesla
1 4.0 3.0 2000 tesla
2 NaN NaN 2001 tesla
3 2.0 NaN 2002 tesla
4 3.0 NaN 1999 BMW
5 2.0 -1.0 2000 BMW
6 2.0 NaN 2002 BMW
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424157.html
上一篇:查找嵌套串列中不同子串列的相同索引中元素之間的運行差異
下一篇:Numpy陣串列示每十個值
