Python 2.7 python数据帧按索引记录,不包括NaN
数据帧Python 2.7 python数据帧按索引记录,不包括NaN,python-2.7,pandas,dictionary,dataframe,nan,Python 2.7,Pandas,Dictionary,Dataframe,Nan,数据帧 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 我正在尝试将data
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
我正在尝试将dataframe更改为dictionary
我想忽略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'}
使用
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
使用
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()
之后会给我一个keyrorm
。我发现fillna()
在我的例子中更有用,可以通过使用fillna(“”)
来测试相应的值是否存在,从而避免KeyError
。因此,我的完整解决方案是:df.apply(lambda x:x.fillna(“”).to_dict(),axis=1)
虽然这很有帮助,但我还发现,当我迭代这个数据结构时,使用dropna()
之后会给我一个键错误。我发现fillna()
在我的例子中更有用,可以通过使用fillna(“”)
来测试相应的值是否存在,从而避免KeyError
。因此,我的完整解决方案是:df.apply(lambda x:x.fillna(“”).to_dict(),axis=1)