用字典替换 pandas 数据帧 None 值
replace pandas dataframe None value with dictionary
我有一个名为“myRawDF1”的 pandas 数据框并且:
print(myRawDF1)
结果是:
stop_price last_trail_price
0 79.74 {'amount': '100.47', 'currency_code': 'USD'}
1 None
2 73.06 {'amount': '114.52', 'currency_code': 'USD'}
etc...
我想用字典替换“None” {'amount': '0.0'} 所以结果是:
stop_price last_trail_price
0 79.74 {'amount': '100.47', 'currency_code': 'USD'}
1 {'amount': '0.0'}
2 73.06 {'amount': '114.52', 'currency_code': 'USD'}
或者如果它更容易...我可以像这样使用 {'amount': '0.0', 'currency_code': 'USD'}:
stop_price last_trail_price
0 79.74 {'amount': '100.47', 'currency_code': 'USD'}
1 {'amount': '0.0', 'currency_code': 'USD'}
2 73.06 {'amount': '114.52', 'currency_code': 'USD'}
我不知道该怎么做。我想我可以使用“fillna”因为:
myRawDF1.fillna(0.0, inplace=True)
成功将所有 None 值替换为零...所以我认为这可行:
myRawDF1.fillna({'amount': '0.0'}, inplace=True)
但是不行……我也试过了:
myRawDF1['last_trail_price'].fillna({'amount': '0.0'}, inplace=True)
这会将所有 None 值更改为 NAN...所以它正在做一些事情
我也试过这个...我在网上找到的...但它似乎也不起作用
myRawDF1['last_trail_price'] = myRawDF1['last_trail_price'].fillna(pd.Series([{'amount': '0.0'}], index = myRawDF1.index))
我认为你需要使用 loc
访问:
s = df['last_trail_price'].isna()
df.loc[s, 'last_trail_price'] = [{'amount':0.0} for _ in range(s.sum())]
我有一个名为“myRawDF1”的 pandas 数据框并且:
print(myRawDF1)
结果是:
stop_price last_trail_price
0 79.74 {'amount': '100.47', 'currency_code': 'USD'}
1 None
2 73.06 {'amount': '114.52', 'currency_code': 'USD'}
etc...
我想用字典替换“None” {'amount': '0.0'} 所以结果是:
stop_price last_trail_price
0 79.74 {'amount': '100.47', 'currency_code': 'USD'}
1 {'amount': '0.0'}
2 73.06 {'amount': '114.52', 'currency_code': 'USD'}
或者如果它更容易...我可以像这样使用 {'amount': '0.0', 'currency_code': 'USD'}:
stop_price last_trail_price
0 79.74 {'amount': '100.47', 'currency_code': 'USD'}
1 {'amount': '0.0', 'currency_code': 'USD'}
2 73.06 {'amount': '114.52', 'currency_code': 'USD'}
我不知道该怎么做。我想我可以使用“fillna”因为:
myRawDF1.fillna(0.0, inplace=True)
成功将所有 None 值替换为零...所以我认为这可行:
myRawDF1.fillna({'amount': '0.0'}, inplace=True)
但是不行……我也试过了:
myRawDF1['last_trail_price'].fillna({'amount': '0.0'}, inplace=True)
这会将所有 None 值更改为 NAN...所以它正在做一些事情
我也试过这个...我在网上找到的...但它似乎也不起作用
myRawDF1['last_trail_price'] = myRawDF1['last_trail_price'].fillna(pd.Series([{'amount': '0.0'}], index = myRawDF1.index))
我认为你需要使用 loc
访问:
s = df['last_trail_price'].isna()
df.loc[s, 'last_trail_price'] = [{'amount':0.0} for _ in range(s.sum())]