Python 连接熊猫中的字符串列
我有一个pandas数据框,希望连接两列,同时保持数据框中的所有其他列相同。根据文档,我尝试了以下方法:Python 连接熊猫中的字符串列,python,pandas,Python,Pandas,我有一个pandas数据框,希望连接两列,同时保持数据框中的所有其他列相同。根据文档,我尝试了以下方法: df['Code2']= df['Code'] + df['Period'] 然而,结果似乎对某些行几乎有效。而在其他行中,它根本不起作用 请参见下面“代码2”列中的结果 请注意,“期间”列中的值并不都等于2017年。在上面的摘录中,它们只是这样 预期结果如下: +---------+--------+--------------+ | Code | Period | Code
df['Code2']= df['Code'] + df['Period']
然而,结果似乎对某些行几乎有效。而在其他行中,它根本不起作用
请参见下面“代码2”列中的结果
请注意,“期间”列中的值并不都等于2017年。在上面的摘录中,它们只是这样
预期结果如下:
+---------+--------+--------------+
| Code | Period | Code2 |
+---------+--------+--------------+
| 1000000 | 2017 | 1000000_2017 |
| 1100000 | 2017 | 1100000_2017 |
| 1101000 | 2017 | 1101000_2017 |
| 1101100 | 2017 | 1101100_2017 |
| 1101110 | 2017 | 1101110_2017 |
+---------+--------+--------------+
这里是两列的数字相加。通过将这些字符串转换为字符串,可以将这些字符串连接起来,例如:
df['Code2'] = df['Code'].astype(str) + df['Period'].astype(str)
或者,如果要将其与下划线分隔开:
df['Code2'] = df['Code'].astype(str) + '_' + df['Period'].astype(str)
如果您有两个以上的列,一个好的解决方案是使用
str.join
的agg
。将整型列转换为字符串,以便连接它们(而不是以算术方式添加它们)
对于两列数据,这也很好:
df['Code2'] = df.astype(str).agg('_'.join, axis=1)
df
Code Period Code2
0 1000000 2017 1000000_2017
1 1100000 2017 1100000_2017
2 1101000 2017 1101000_2017
3 1101100 2017 1101100_2017
4 1101110 2017 1101110_2017
这两个是整数,而不是字符串,因此可以将它们相加。@WillemVanOnsem。哈,哇。有道理。我如何加入它们而不添加它们?
df['Code2'] = df['Code'].astype(str) + '_' + df['Period'].astype(str)
>>> df['Code2'] = df['Code'].astype(str) + '_' + df['Period'].astype(str)
>>> df
Code Period Code2
0 1000000 2017 1000000_2017
1 1100000 2017 1100000_2017
2 1101000 2017 1101000_2017
3 1101100 2017 1101100_2017
4 1101110 2017 1101110_2017
df[['Code', 'Period']].astype(str).agg('_'.join, axis=1)
0 1000000_2017
1 1100000_2017
2 1101000_2017
3 1101100_2017
4 1101110_2017
dtype: object
df['Code2'] = df.astype(str).agg('_'.join, axis=1)
df
Code Period Code2
0 1000000 2017 1000000_2017
1 1100000 2017 1100000_2017
2 1101000 2017 1101000_2017
3 1101100 2017 1101100_2017
4 1101110 2017 1101110_2017