串联错误(传递的项目数错误x,放置位置表示1)

时间:2019-08-22 16:14:15

标签: pandas error-handling type-conversion concatenation

我有一个像这样的数据框:

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

我似乎无法绕过此错误?

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