我有一个带有不同长度列的数据框。看起来像这样:
.
当我通过以下代码列出列中的元素时:
Croptypes VariableInputs FixedInputs
barley fertilizer land
rapeseed labor
wheat capital
我得到这个结果。
Croptypes = list(df['Croptypes'])
VariableInputs = list(df['VariableInputs'])
如何告诉“列表”不列出空白单元格?
我希望:
['barley', 'rapeseed', 'wheat']
['fertilizer', nan, nan]
答案 0 :(得分:2)
使用dropna
和tolist
:
>>> df['VariableInputs'].dropna().tolist()
['fertilizer']
>>>
或者对于每列:
print({k: v.dropna().tolist() for k, v in df.to_dict('s').items()})
输出:
{'Croptypes': ['barley', 'rapeseed', 'wheat'], 'VariableInputs': ['fertilizer'], 'FixedInputs': ['land', 'labor', 'capital']}
答案 1 :(得分:1)
您可以为列的值创建字典,列为:
d = {col:df[col].dropna().tolist() for col in df}
d
{'Croptypes': ['barley', 'rapeseed', 'wheat'],
'VariableInputs': ['fertilizer'],
'FixedInputs': ['land', 'labor', 'capital']}