我试图从NOAA解析Storm Data。经过一些清理和解析后,我留下了一个像这样的DataFrame:
au run --watch
为了记录,这个示例DataFrame只是一个简化。真正的DataFrame有大约。 25列和2200万行。我想将import pandas as pd
data = { 'ID' : [1, 2, 3, 4, 5, 6],
'EVENT_TYPE': ['Flood', 'Hail', 'Fire', 'Tornado', 'Flood', 'Fire'],
'Property_Damage': ['2.5K', 0, '.4M', "1.00K", NaN, "1K"]}
df = pd.DataFrame(data)
中的值从字符串转换为数值。我期望的结果看起来与df['Property_Damage']
类似。
我了解到我假设[2500, 0, 400000, 1000, 0, 1000]
值可以替换为NaN
。我试图用
0
但这不适用于damage_property_split = df['Propery_Damage'].str.split([-1], expand=True)
或0
的记录。
转换的最佳方式是什么
NaN
到['2.5K', 0, '.4M', "1.00K", NaN, "1K"]
?
感谢您的帮助!!!
答案 0 :(得分:4)
我是这种方法的粉丝
mapping = dict(K='E3', M='E6', B='E9')
df.assign(Property_Damage=pd.to_numeric(
df.Property_Damage.replace(mapping, regex=True)))
EVENT_TYPE ID Property_Damage
0 Flood 1 2500.0
1 Hail 2 0.0
2 Fire 3 400000.0
3 Tornado 4 1000.0
4 Flood 5 NaN
5 Fire 6 1000.0
您可以让NaN
填充0
mapping = dict(K='E3', M='E6', B='E9')
df.assign(Property_Damage=pd.to_numeric(
df.Property_Damage.fillna(0).replace(mapping, regex=True)))
EVENT_TYPE ID Property_Damage
0 Flood 1 2500.0
1 Hail 2 0.0
2 Fire 3 400000.0
3 Tornado 4 1000.0
4 Flood 5 0.0
5 Fire 6 1000.0