我有一個pandas dataframe喜歡:
Reporter Partner Element Value
'A' 'B' 'import' a
'A' 'C' 'import' 0
'B' 'A' 'export' c
'B' 'C' 'export' d
'C' 'A' 'export' e
我想比較那些報告者是另一個伙伴的行(一個元素是“匯入”,另一個元素是“匯出”),并通過對它們應用函式將兩行合并為一行。例如:
def combine(a, b):
if a['value']==0:
return b
if b['value']==0:
return a
if a['value'] == b['value']*(1.12):
return a
return b
如何找到應該應用該函式的那些行pandas?
所需的輸出類似于:
Reporter Partner Element Value
'A' 'B' 'import' a c
'A' 'C' 'import' e
'C' 'B' 'import' d
uj5u.com熱心網友回復:
我想你可以制作一個記者伙伴的聯合索引:
df['Index'] = df[['Reporter', 'Partner']].apply(lambda x: '_'.join(sorted(x)), axis=1)
我們創建一個排序索引,其中 A 和 B,或 B 和 A 具有相同的值。然后您可以應用groupby函式并進行進一步的計算。
| # | 記者 | 伙伴 | 元素 | 價值 | 指數 |
|---|---|---|---|---|---|
| 0 | 一個 | 乙 | 進口 | 一個 | A_B |
| 1 | 一個 | C | 進口 | 0 | A_C |
| 2 | 乙 | 一個 | 出口 | C | A_B |
| 3 | 乙 | 乙 | 出口 | d | 乙_乙 |
隨時詢問更多,我很樂意提供幫助!
uj5u.com熱心網友回復:
我不確定我是否完全理解你的問題,但你可以使用這種表示法,b[a['value']==0]
這會導致一列b滿足條件的值a['value']==0
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/386209.html
