【问题标题】:python dataframe to_dict by index, exclude NaNpython数据帧to_dict按索引,排除NaN
【发布时间】:2018-08-22 12:23:32
【问题描述】:

采样数据帧

     v1 v2  v3  v4  v5  v6
index                                                                   
0   -2  -2  -2  NaN -2  -2
1   -2  -2  -2  NaN -2  -2
2   -2  -2  -2  NaN -2  -2
3   -2  -2  -2  -2  -2  -2
4   -2  -2  -2  NaN -2  -2

我正在尝试将数据框更改为字典 我想忽略 json 文档中的“nan”字段

正在尝试什么:

import pandas as pd
pd.DataFrame((samp.to_dict('index')).items())

期望的输出:

index    values
0   {'v1':'-2', 'v2':'-2','v3':'-2','v5':'-2','v6':'-2'}
1   {'v1':'-2', 'v2':'-2','v3':'-2','v5':'-2','v6':'-2'}
2   {'v1':'-2', 'v2':'-2','v3':'-2','v5':'-2','v6':'-2'}
3   {'v1':'-2', 'v2':'-2','v3':'-2','v4':'-2','v5':'-2','v6':'-2'}
4   {'v1':'-2', 'v2':'-2','v3':'-2','v5':'-2','v6':'-2'}

【问题讨论】:

    标签: python-2.7 pandas dictionary dataframe nan


    【解决方案1】:

    apply做吧

    df.apply(lambda x : x.dropna().to_dict(),axis=1)
    Out[362]: 
    index
    0    {'v3': -2.0, 'v5': -2.0, 'v6': -2.0, 'v1': -2....
    1    {'v3': -2.0, 'v5': -2.0, 'v6': -2.0, 'v1': -2....
    2    {'v3': -2.0, 'v5': -2.0, 'v6': -2.0, 'v1': -2....
    3    {'v4': -2.0, 'v3': -2.0, 'v5': -2.0, 'v2': -2....
    4    {'v3': -2.0, 'v5': -2.0, 'v6': -2.0, 'v1': -2....
    dtype: object
    

    【讨论】:

    • 虽然这很有帮助,但我还发现使用dropna() 后来在我迭代这个数据结构时给了我一个KeyError。我发现fillna() 在我的情况下更有用,可以通过使用fillna('') 来测试是否存在相应的值来避免KeyError。所以,我的完整解决方案是:df.apply(lambda x : x.fillna('').to_dict(),axis=1)
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2015-08-22
    • 2023-03-30
    • 2019-08-12
    相关资源
    最近更新 更多