在 pandas 的 Dataframe 中插入几个新列,其值基于 Dataframe 中的另一列

Insert several new column with the values based on another columns in a Dataframe in pandas

我有一个可变形状的数据框。开头有两个固定的列,加上灵活的列数,每种情况都会有所不同。 起始数据帧:

A        B         FlexColumnA    FlexColumnB
Apples   Pears     0/1;23;45;67   1/1;23;45;67
Apples   Apples    0/0;24;26;27   0/1;27;28;29

我需要在每个“FlexColumn”之前插入一个新列,规则如下:

新列的名称:“FlexColumn”+my_ending; my_ending不变;

新列的值:“如果灵活列的一行包含'1/1',则'norm';如果一行包含o/1,则插入'half' ; 否则 -'not_known' "

A         B        FlexColumnA_myEnding  FlexColumnA    FlexColumnB_myEnding FlexColumnB
Apples   Pears     half                  0/1;23;45;67   norm                 1/1;23;45;67
Apples   Apples    not_known             0/0;24;26;27   half                 0/1;27;28;29

这样的事情怎么样:

def get_outcome(s):
    if '1/1' in s:
        return 'norm'
    elif '0/1' in s:
        return 'half'
    else:
        return 'not_known'

flexcols = [c for c in df.columns if 'FlexColumn' in c]

new_cols = []

for col in flexcols:
    new_cols.append(df[col].apply(get_outcome).rename(col+'_myEnding'))
    new_cols.append(df[col])

pd.concat([df['A'],df['B']]+new_cols,axis=1)