python - 如何将 pandas DataFrame 转换为省略 NaN 值的字典列表?

标签 python pandas

这个问题类似于Pandas DataFrame to List of Dictionaries ,除了 DataFrame 不是“完整的”:其中有一些 nan 值。假设我从字典列表中生成一个 DataFrame,如下所示:

import pandas as pd

data = [{'foo': 1, 'bar': 2}, {'foo': 3}]
df = pd.DataFrame(data)

因此生成的 df 看起来像

   bar  foo
0  2.0    1
1  NaN    3

我想要一个将 df 变回原始 data 字典列表的函数。不幸的是,

assert df.to_dict('records') == data

失败是因为前者是

[{'bar': 2.0, 'foo': 1.0}, {'bar': nan, 'foo': 3.0}]

在第二项中使用额外的 'bar': nan 键值对。我怎样才能取回原始的数据

最佳答案

还有另一种方法:

df.T.apply(lambda x: x.dropna().to_dict()).tolist()

输出:

[{'bar': 2.0, 'foo': 1.0}, {'foo': 3.0}]

关于python - 如何将 pandas DataFrame 转换为省略 NaN 值的字典列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47544088/

相关文章:

python - 将函数的输出传递给 django 过滤器

python - 比较 2 个数据帧,找到匹配的行,然后对列求和

python - 在 Python Pandas 中,如何获取一列,然后跳过几列,然后获取连续的列

python - 替换 DataFrame 中的值

python - Pandas groupby(),agg() - 如何在没有多索引的情况下返回结果?

python - Pandas notnull 不适用于数据框中的列

python - 在 Pandas 中,如何连续计算连续的正数和负数?

python - 在模块中编写单元测试的正确方法?

python - 在 Tails 上使用 python 包管理器时 Torsocks 连接被拒绝错误

python - 建议在 tensorflow 2.0 中调试 `tf.data.Dataset` 操作