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

时间:2017-03-31 03:06:48

标签: python pandas dataframe

我想将两个专栏“日/夜”结合起来?和'缩写'作为字符串,以获得另一列,以“缩写”值的形式显示数字,然后是“日/夜”?值。

我目前拥有的DataFrame:

StringBuilder

例如,我将额外的列输出为:

    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是DF的名称。

输出很奇怪:

daily['New'] = daily['Abbreviated']+str(daily['Day/Night?'])

有没有人对如何做到这一点有任何建议?

感谢。

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分: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