pandas:将两列数字组合成字符串作为新列

3
我希望将‘Day/Night?’和‘Abbreviated’这两列组合为字符串形式,以获得另一列,该列显示以‘Abbreviated’值的形式表示的数字,后跟‘Day/Night?’值。
我当前拥有的数据框:
    Route       Date        Collection Type Tonnage Day/Night?  Abbreviated
0   321-2_2     2014-07-11  2               12.96   2           1107
0   325-1_1     2014-07-14  1               1.85    1           1407
1   321-323_2   2014-07-14  1               4.42    2           1407
1   325-2_1     2014-07-15  3               13.20   1           1507
2   321-2_2     2014-07-15  1               3.25    2           1507

例如,我想要额外的列输出为:
11072
14071
14072
15071
15072

我尝试了这段代码:
daily['New'] = daily['Abbreviated']+str(daily['Day/Night?'])

这里的Daily是DF的名称。

然而输出结果却很奇怪:

New
11070 2\n0 1\n1 2\n1 1\n2 ...
14070 2\n0 1\n1 2\n1 1\n2 ...
14070 2\n0 1\n1 2\n1 1\n2 ...
15070 2\n0 1\n1 2\n1 1\n2 ...
15070 2\n0 1\n1 2\n1 1\n2 ...

有人有关于如何完成这个任务的建议吗?谢谢。
2个回答

4

您需要使用 astype 进行类型转换:

df['Abbreviated'].astype(str) + df['Day/Night?'].astype(str)

#0    11072
#0    14071
#1    14072
#1    15071
#2    15072
#dtype: object

0
cols = ['Abbreviated', 'Day/Night?']
df.assign(New=df[cols].astype(str).apply(''.join, 1))

   Route       Date  Collection  Type  Tonnage  Day/Night?  Abbreviated    New
0      0    321-2_2  2014-07-11     2    12.96           2         1107  11072
1      0    325-1_1  2014-07-14     1     1.85           1         1407  14071
2      1  321-323_2  2014-07-14     1     4.42           2         1407  14072
3      1    325-2_1  2014-07-15     3    13.20           1         1507  15071
4      2    321-2_2  2014-07-15     1     3.25           2         1507  15072

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接