将一列拆分为多列

时间:2021-06-29 11:45:20

标签: python-3.x pandas

我有一个熊猫数据框如下:

|  A       |  Value |
+----------+--------+
|ABC001035 |  34    |
|USN001185 |  45    |
|UCT010.75 |  23    |
|ATC001070 |  21    |  
+----------+--------+

我想将 A 中的列(基于 A 中的最后三位数字)拆分为 X 和 Y 列,它应该如下所示

|  A       |  Value |    X    | Y   |
+----------+--------+---------+-----+
|ABC001035 |  34    |  ABC001 | 035 |
|USN001185 |  45    |  USN001 | 185 |
|UCT010.75 |  23    |  UCT01  | 0.75|
|ATC001070 |  21    |  ATC001 | 070 |
+----------+--------+---------+-----+

那么如何拆分A列?

2 个答案:

答案 0 :(得分:2)

您可以使用 .str 访问器索引一个系列中的所有字符串:

>>> df['X'] = df['A'].str[:-3]
>>> df['Y'] = df['A'].str[-3:]
>>> df
           A  Value       X    Y
0  ABC001035   34.0  ABC001  035
1  USN001185   45.0  USN001  185
2  UCT010.75   23.0  UCT010  .75
3  ATC001070   21.0  ATC001  070

答案 1 :(得分:1)

把你的问题分成更小的问题,更容易解决! :)

如何拆分字符串(取最后3个字符):

'Hello world!'[-3:0]
# Returns: ld!

如何对 DataFrame 值应用函数?

df.A.apply(lambda x: x[-3:])
# Returns pandas.Series: [035, 185, 0.75, 070]

如何将系列保存到新的 DataFrame 列?

# Create Y column.
df['Y'] = df.A.apply(lambda x: x[-3:])
相关问题