Python df.fillna(dict)未填充NaN值
我有以下建议:Python df.fillna(dict)未填充NaN值,python,pandas,dataframe,fillna,Python,Pandas,Dataframe,Fillna,我有以下建议: 0 NaN 1 NaN 2 NaN
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 {'A': {'B': '14:00', 'C': '12:30', 'D': '07:30'}}
13 NaN
14 NaN
15 {'A': {'B': '14:00', 'C': '12:30', 'D': '08:00'}}
16 NaN
17 {'A': {'B': '14:00', 'C': '13:30', 'D': '08:00'}}
18 {'A': {'B': '08:00', 'C': '08:00', 'D': '08:00'}}
19 NaN
我想用索引12处的值填充此df的NaN值,即
{'A': {'B': '14:00', 'C': '12:30', 'D': '07:30'}}
我尝试了以下代码:
x = {'A': {'B': '14:00', 'C': '12:30', 'D': '07:30'}}
df.fillna(x, inplace= True)
但是,它没有填充任何
NaN
值,df保持不变。当我输入x=1
时,NaN
值被1
填充。为什么会这样?有什么解决方法吗?您可以使用布尔索引而不是。fillna
:
x={“区块时间”:{“分割”:“14:00”,“晚上”:“12:30”,“早上”:“07:30”}
df[df.isna()]=x
打印(df)
印刷品:
val
0{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
1{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
2{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
3{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
4{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
5{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
6{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
7{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
8{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
9{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
10{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
11{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
12{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
13{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
14{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
15{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
16{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
17{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
18{'BLOCK_TIME':{'SPLIT':'08:00','night':'。。。
19{'BLOCK_TIME':{'SPLIT':'14:00','night':'。。。
或(对于一列):
x={“区块时间”:{“分割”:“14:00”,“晚上”:“12:30”,“早上”:“07:30”}
df.loc[df[“val”].isna(),“val”]=df.loc[df[“val”].isna(),“val”].apply(
lambda:x
)
打印(df)
我们仍然可以尝试fillna
,但需要通过索引dict
df = df.fillna({12:{'A': {'B': '14:00', 'C': '12:30', 'D': '07:30'}}})