如何基于Python熊猫中的条件拆分列

时间:2020-06-27 05:07:25

标签: python-3.x pandas numpy if-statement jupyter-notebook

我的其中一列包含以下数据-

Numbers
100 K
25.20 K
250 K
33.45 K
250
100
10
5
4
1

在上面的“数字”列中,我想将数字与K乘以1000,将其他数字与K乘以,我想保持原样。 如何执行条件的列号拆分和乘法

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以将numpy.where()与布尔掩码一起使用,以标识包含'K'的行:

mask = df['Numbers'].str.contains('K')

df['Numbers'] = np.where(mask, df['Numbers'].str.extract(r'([\d\.]+)', expand=False).astype(float)*1000, df['Numbers'])

收益:

  Numbers
0  100000
1   25200
2  250000
3   33450
4     250
5     100
6      10
7       5
8       4
9       1

答案 1 :(得分:0)

这是使用自定义函数的一种方法:

import re
def func(s):
    # extract the digits with decimal
    s = float(re.sub('[^0-9\\.]', '', s))*1000
    return s

is_k = df['col'].str.contains('K')
df.loc[is_k, 'col2'] = df.loc[is_k, 'col'].apply(func)

df['col2'] = df['col2'].combine_first(df['col'])

       col    col2
0    100 K  100000
1  25.20 K   25200
2    250 K  250000
3      250     250
4      100     100
5       10      10

样本数据

s=["100 K", "25.20 K", "250 K", "250", "100","10"]
df = pd.DataFrame({'col': s})