用字典替换 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())]