Python 熊猫用字典填列
我有这样一个数据框:Python 熊猫用字典填列,python,dictionary,pandas,dataframe,Python,Dictionary,Pandas,Dataframe,我有这样一个数据框: A B C D 0 1 0 nan nan 1 8 0 nan nan 2 8 1 nan nan 3 2 1 nan nan 4 0 0 nan nan 5 1 1 nan nan dc = {'C': 5, 'D' : 10} 我有一本这样的字典: A B C D 0 1 0 nan
A B C D
0 1 0 nan nan
1 8 0 nan nan
2 8 1 nan nan
3 2 1 nan nan
4 0 0 nan nan
5 1 1 nan nan
dc = {'C': 5, 'D' : 10}
我有一本这样的字典:
A B C D
0 1 0 nan nan
1 8 0 nan nan
2 8 1 nan nan
3 2 1 nan nan
4 0 0 nan nan
5 1 1 nan nan
dc = {'C': 5, 'D' : 10}
我想用字典填充数据框中的nan
值,但仅针对B列值为0的单元格,我想获得以下结果:
A B C D
0 1 0 5 10
1 8 0 5 10
2 8 1 nan nan
3 2 1 nan nan
4 0 0 5 10
5 1 1 nan nan
我知道如何对数据帧进行子集划分,但我找不到用字典填充值的方法;有什么想法吗?您可以使用loc
并将您的口述传递给它:
In [13]: df.loc[df.B==0,:].fillna(dc)
Out[13]:
A B C D
0 1 0 5 10
1 8 0 5 10
4 0 0 5 10
要为数据帧执行此操作,您需要使用相同的掩码进行切片,并将上面的结果分配给它:
df.loc[df.B==0, :] = df.loc[df.B==0,:].fillna(dc)
In [15]: df
Out[15]:
A B C D
0 1 0 5 10
1 8 0 5 10
2 8 1 NaN NaN
3 2 1 NaN NaN
4 0 0 5 10
5 1 1 NaN NaN
您可以使用withloc
并将您的dict传递给它:
In [13]: df.loc[df.B==0,:].fillna(dc)
Out[13]:
A B C D
0 1 0 5 10
1 8 0 5 10
4 0 0 5 10
要为数据帧执行此操作,您需要使用相同的掩码进行切片,并将上面的结果分配给它:
df.loc[df.B==0, :] = df.loc[df.B==0,:].fillna(dc)
In [15]: df
Out[15]:
A B C D
0 1 0 5 10
1 8 0 5 10
2 8 1 NaN NaN
3 2 1 NaN NaN
4 0 0 5 10
5 1 1 NaN NaN