我有一个包含2列的Dataframe,我正在尝试创建一个新列column3
,其逻辑连接column1
(String)和column2
(int)的值分隔符(' _')。
以下是数据帧的几个初始值:
column1 column2
0 Andy 1
1 Ashok 4
2 Collins 7
以下是我的几次尝试:
df['column3'] = df['column1'].apply(lambda x: x + '_' + str(df['column2']))
df['column3'] = df['column1'] + '_' + str(df['column2'])
df['column3'] = pd.Series(df['column1']).str.cat(str(df['column2']), sep='_')
结果如下:
0 Andy_0 2\n1 2\n2 1\n3 ...
1 Ashok_0 2\n1 2\n2 1\n3 ...
2 Collins_0 2\n1 2\n2 1\n3 ...
但是(2\n1 2\n2 1\n3 ...
)被添加到结果column3值中,并且只有一个值零(0)被附加到结果column3。
请告诉我哪里出了问题?
答案 0 :(得分:1)
df.column1 + "_" + df.column2.astype("str")
答案 1 :(得分:0)
你想要这个:
def concat_cols(row):
return "{}_{}".format(row['column1'], row['column2'])
df['column3'] = df.apply(concat_cols, axis = 1)
关键方面是axis = 1
,它以行方式而非列方式查看数据帧。在上面的代码中,lambda函数中的df['column2']
指的是整个列,而不仅仅是行的值。