【发布时间】:2018-07-31 15:05:17
【问题描述】:
我有一个来自 pandas 数据框 df 的名为“值”的列,其中包含数字和单词。它看起来像这样:
VALUE
0 done
1 Yes
2 3.45
3 2bc
我想将列拆分为 2 列,其中左侧只有字母,右侧只有数字。理想情况下,结果应该是:
0 1
0 done NaN
1 Yes NaN
2 NaN 3.45
3 bc 2
我尝试像这样使用 .str.extract 熊猫函数:
df['value'].str.extract('([A-Za-z]+)?([0-9]*[.]?[0-9]+)')
我得到的结果类似于以下:
0 1
0 NaN NaN
1 NaN NaN
2 NaN 3.45
3 NaN NaN
这些词没有按应有的方式出现在第 0 列中。
有谁知道在 pandas/python 中进行这种操作的原因或更好的方法吗?
【问题讨论】:
-
这很快就会变得一团糟。如果一个字符串中间有一个数字会发生什么,例如
1b3? -
对于您的具体示例,将
+更改为*,例如df['value'].str.extract('([A-Za-z]+)?([0-9]*[.]?[0-9]*)')
标签: python regex string pandas