我有一个可变形状的数据框。开始时有两个固定列,加上灵活的列数,每种情况下都会有所不同。起始数据帧:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句