在 Pandas 中高效编辑字符串并转换为浮点数

ska*_*asa 2 python data-analysis python-3.x pandas

我有一个大数据集(appx 1GB,例如在字符串 '20000-30000' 中给出了一列薪水范围。我想删除连字符后的所有内容并转换为浮点数。但是这并不总是存在,所以我还需要在那里有一些条件来检查它是否在那里。

除了遍历整个列单独转换每个列之外,是否有一种快速的 Pandas 方法可以做到这一点?我觉得必须有,因为这似乎是一个常见问题,但是类似的问题并不能解决大型数据集的问题。

示例输入将是:

df = pd.DataFrame({'salary': ['200 - 300', '400', '400-500', '600', '-']})

df
Out: 
      salary
0  200 - 300
1        400
2    400-500
3        600
4          -
Run Code Online (Sandbox Code Playgroud)

对于这些值,首选输出是:

   salary
0     200
1     400
2     400
3     600
4       0
Run Code Online (Sandbox Code Playgroud)

0真的可以是任何填充物的价值,我只是选择0

Zer*_*ero 5

这是一种使用方法 apply

In [111]: df = pd.DataFrame({'salary': ['200 - 300', '400', '400-500', '600', '-']})

In [112]: df['salary'].apply(lambda x: x.split('-')[0].strip()).replace('', '0').astype(int)
Out[112]:
0    200
1    400
2    400
3    600
4      0
Name: salary, dtype: int32
Run Code Online (Sandbox Code Playgroud)

另一个,使用regex和字符串方法。

In [134]: df['salary'].str.extract('(\d+)', expand=True).fillna(0)
Out[134]:
     0
0  200
1  400
2  400
3  600
4    0
Run Code Online (Sandbox Code Playgroud)