在 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)
我有一个可变形状的数据框。开头有两个固定的列,加上灵活的列数,每种情况都会有所不同。 起始数据帧:
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)