繁体   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