![](/img/trans.png)
[英]How to assign values on multiple columns of a pandas data frame based on condition
[英]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.