我有一个像这样的数据框:
a b
thing1 1.00
thing2 2.71
列a为字符串,列b为float64,我尝试将帧转换为以下位置:如果列b为1,则返回1,如果列b中的值大于1,则返回2.71 / 6,2.71R24, 1
a b c
thing1 1 1
thing2 2.71 2.71/6,2.71R24,1
我已经尝试过这样的功能
def convert (row):
if row['b'] == 1.00:
return '1'
else:
return df['b'].astype(str)+'/6,'+df['b'].astype(str)+'R24,1'
df['c'] = df.apply(lambda row: convert (row), axis=1)
我收到以下错误:
ValueError: Wrong number of items passed 15, placement implies 1
我似乎无法绕过此错误?
答案 0 :(得分:2)
尝试使用np.where
df['c']=np.where(df.b==1,1,df.b.astype(str)+'/6,'+df.b.astype(str)+'R24,1')
df
Out[504]:
a b c
0 thing1 1.00 1
1 thing2 2.71 2.71/6,2.71R24,1