繁体   English   中英

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

[英]How to convert columns of a dataframe to list with different lengths?

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

Croptypes   VariableInputs   FixedInputs
barley      fertilizer       land
rapeseed                     labor
wheat                        capital

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

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

我得到这个结果。

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

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

我预计:

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

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

您可以为列表的每个列创建字典,其值如下:

d = {col:df[col].dropna().tolist() for col in df}

d
{'Croptypes': ['barley', 'rapeseed', 'wheat'],
 'VariableInputs': ['fertilizer'],
 'FixedInputs': ['land', 'labor', 'capital']}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM