用字典替换熊猫数据框无值

时间:2021-02-24 20:31:09

标签: python pandas dataframe dictionary fillna

我有一个名为“myRawDF1”的熊猫数据框,并且:

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...

我想用字典 {'amount': '0.0'} 替换 "None" 所以结果是:

    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))

1 个答案:

答案 0 :(得分:1)

我认为您需要使用 loc 访问权限:

s = df['last_trail_price'].isna()

df.loc[s, 'last_trail_price'] = [{'amount':0.0} for _ in range(s.sum())]