我的其中一列包含以下数据-
Numbers
100 K
25.20 K
250 K
33.45 K
250
100
10
5
4
1
在上面的“数字”列中,我想将数字与K乘以1000,将其他数字与K乘以,我想保持原样。 如何执行条件的列号拆分和乘法
谢谢。
答案 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})