如何将数据框的列转换为具有不同长度的列表?

时间:2019-07-04 11:53:38

标签: python pandas list

我有一个带有不同长度列的数据框。看起来像这样:

.

当我通过以下代码列出列中的元素时:

Croptypes   VariableInputs   FixedInputs
barley      fertilizer       land
rapeseed                     labor
wheat                        capital

我得到这个结果。

Croptypes = list(df['Croptypes'])
VariableInputs = list(df['VariableInputs'])

如何告诉“列表”不列出空白单元格?

我希望:

['barley', 'rapeseed', 'wheat']
['fertilizer', nan, nan]

2 个答案:

答案 0 :(得分:2)

使用dropnatolist

>>> 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']}