python - 构建特定 dtype 的数据框时,pandas 是否具有默认填充值?

标签 python pandas

考虑字典 d :

d = {'A': {'x': 1, 'y': 1}, 'B': {'y': 1, 'z': 1}}

当我将此传递给 pandas.DataFrame 时构造函数,我知道我将缺少 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)

我知道这不可用,但还有什么我错过的吗?

最佳答案

pandas 0.24您可以使用 Int64 dtype:

import pandas as pd    
d = {'A': {'x': 1, 'y': 1}, 'B': {'y': 1, 'z': 1}}    
pd.DataFrame(d, dtype='Int64').fillna(0)

输出:
    A   B
x   1   0
y   1   1
z   0   1

小心资本在' nt64'。如果你用较低的 'i' 写它,即 'int64',你会得到浮点数。

关于python - 构建特定 dtype 的数据框时,pandas 是否具有默认填充值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460685/

相关文章:

python - Tkinter 按钮与网格对齐

python - 在python2.7.5上安装pip及旧版本问题

python - 选择 pandas 分组中的每一个

python - 如何在 Python 中使用线程?

python - 如何使用 pandas.pivot_table 获取 status 中的值?

python - 在 redshift UDF 中导入用户定义的库

python - 如何取消堆叠并将多列抓取到索引中?

python - 将我的列转换为小数点后两位

python - Pandas:在遍历行时有条件地将行插入 DataFrame

python - 通过调换两列并重复另一列来 reshape pandas DataFrame