簡體   English   中英

連接熊貓中的字符串列

[英]Concatenating string columns in pandas

我有一個 Pandas 數據框,想連接兩列,同時保持數據框中的所有其他列相同。 我根據文檔嘗試了以下操作:

df['Code2']= df['Code'] + df['Period']

然而,結果似乎幾乎適用於某些行。 而在其他行中它根本不起作用。

請參閱下面“代碼 2”列中的結果。

+---------+--------+---------+
|  Code   | Period |  Code2  |
+---------+--------+---------+
| 1000000 |   2017 | 1002017 |
| 1100000 |   2017 | 1102017 |
| 1101000 |   2017 | 1103017 |
| 1101100 |   2017 | 1103117 |
| 1101110 |   2017 | 1103127 |
+---------+--------+---------+

請注意,“Period”列中的值並不都等於 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
      Code  Period
0  1000000    2017
1  1100000    2017
2  1101000    2017
3  1101100    2017
4  1101110    2017
>>> df['Code2'] = df['Code'].astype(str) + df['Period'].astype(str)
>>> df
      Code  Period        Code2
0  1000000    2017  10000002017
1  1100000    2017  11000002017
2  1101000    2017  11010002017
3  1101100    2017  11011002017
4  1101110    2017  11011102017

或者,如果你想用下划線分隔它:

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

如果您有兩列以上,這里的一個很好的解決方案是agg with str.join 整數列轉換為字符串以連接它們(而不是算術相加)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM