簡體   English   中英

如何基於條件有效地連接多個pandas數據幀列?

[英]How to concatenate efficiently multiple pandas data frame columns based on conditionals?

我正在嘗試在Python中連接多個列。 要連接的列根據其他一些列的值而有所不同。 你怎么能有效地做到這一點?

我已經嘗試創建一個對條件字段進行分組的密鑰,並將其與for循環相結合,該循環檢查每一行是否在特定組中。 當然,這需要很長時間才能完成。

例如,給定一個數據框(df):

df = pd.DataFrame({'cond_1': ['A', 'B', 'B', 'C', 'D'], 
              'cond_2': ['one', 'two', 'three', 'three', 'four'], 
             'concat_1': ['Mon', 'Tue', 'Fri', 'Wed', 'Thu'],
             'concat_2': ['Sep', 'Oct', 'Oct', 'Nov', 'Dec'],
             'concat_3': ['first', 'second', 'second', 'third', 'fourth']})

我有以下規則:
- 如果cond_1 ='A',那么concat_1 + concat_2
- 如果cond_1 ='B',那么如果cond_2 ='two'則concat_1 + concat_3 else concat_1 + concat_2
- 如果cond_1在('C','D')中,則concat_2 + concat_3

這應該導致以下結果:

cond_1 | cond_2 | concat_1 | concat_2 | concat_3 | result    
---------------------------------------------------------
A      | one    | Mon      | Sep      | first    | MonSep  
B      | two    | Tue      | Oct      | second   | Tuesecond  
B      | three  | Fri      | Oct      | second   | FriOct  
C      | three  | Wed      | Nov      | third    | Novthird  
D      | four   | Thu      | Dec      | fourth   | Decfourth  

謝謝你的幫助!

apply使用函數來執行此操作來執行if檢查和concatenation

def concate_it(row):
    if row['cond_1'] == 'A':
        return row['concat_1'] + row['concat_2']
    elif row['cond_1'] == 'B' and row['cond_2'] == 'two':
        return row['concat_1'] + row['concat_3']
    elif row['cond_1'] == 'B' and row['cond_2'] != 'two':
        return row['concat_1'] + row['concat_2']
    elif row['cond_1'] in ['C', 'D']:
        return row['concat_2'] + row['concat_3']

df['result'] = df.apply(lambda row : concate_it(row), axis=1)

暫無
暫無

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

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