考虑字典d
:
d = {'A': {'x': 1, 'y': 1}, 'B': {'y': 1, 'z': 1}}
当我把这个传递给pandas.DataFrame http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html构造函数,我知道 x 行、B 列和 z 行、A 列缺少值。
df = pd.DataFrame(d)
df
A B
x 1.0 NaN
y 1.0 1.0
z NaN 1.0
我想要那些NaN
需填写0
。我当然知道我可以填写。
df.fillna(0)
但现在它们都变成了花车
A B
x 1.0 0.0
y 1.0 1.0
z 0.0 1.0
是的!我可以强迫它们为整数
df.fillna(0).astype(int)
A B
x 1 0
y 1 1
z 0 1
或者!我可以通过巧妙的字典理解构建一个系列,并使用 fill_value 参数进行堆叠
pd.Series(
{(i, j): v for j, d_ in d.items() for i, v in d_.items()}
).unstack(fill_value=0)
但如果有一种直接的方法从一开始就用默认值填充缺失值,那么所有这一切都会容易得多。我期待类似的东西
pd.DataFrame(d, dtype=int, fill_value=0)
我知道这是不可用的,但是我还错过了什么吗?