我不确定如何使用清单来实现以下目标。我有一个这样的数据框:
Param_1 Param_2 Param_3
-0.171321 0.0118587 -0.148752
1.93377 0.011752 1.9707
4.10144 0.0112963 4.06861
6.25064 0.0103071 5.83927
我想要为每个列创建单独的列表,列表名称是列标签。
我不想继续这样做:
Param_1 = df["Param_1"].values.tolist()
请告诉我是否有办法。谢谢。
答案 0 :(得分:3)
添加.T
df.values.T.tolist()
Out[465]:
[[-0.171321, 1.93377, 4.10144, 6.25064],
[0.0118587, 0.011752, 0.011296299999999999, 0.0103071],
[-0.148752, 1.9707, 4.06861, 5.83927]]
或者我们可以创建dict
{x:df[x].tolist() for x in df.columns}
Out[489]:
{'Param_1': [-0.171321, 1.93377, 4.10144, 6.25064],
'Param_2': [0.0118587, 0.011752, 0.011296299999999999, 0.0103071],
'Param_3': [-0.148752, 1.9707, 4.06861, 5.83927]}
或使用locals
(不建议使用,但看起来像您所需要的)
variables = locals()
for key in df.columns:
variables["{0}".format(key)]= df[key].tolist()
Param_1
Out[501]: [-0.171321, 1.93377, 4.10144, 6.25064]
答案 1 :(得分:2)
也可以agg
>>> df.agg(tuple)
Param_1 (-0.171321, 1.93377, 4.10144, 6.25064)
Param_2 (0.0118587, 0.011752, 0.011296299999999999, 0....
Param_3 (-0.148752, 1.9707, 4.06861, 5.83927)
dtype: object
如果确实需要lists
,
df.agg(tuple).transform(list)
答案 2 :(得分:1)
如果您想要dictionary
以列名作为键,则可以尝试:
result = df.to_dict(orient='list')
# result will be:
# {'Param_2': [0.0118587, 0.011752, 0.011296299999999999, 0.0103071],
# 'Param_1': [-0.171321, 1.93377, 4.10144, 6.25064],
# 'Param_3': [-0.148752, 1.9707, 4.06861, 5.83927]}
您还可以使用as_matrix
来返回numpy
ndarray
,如下所示:
result = df.as_matrix().T
# result will be:
# [[-0.171321 1.93377 4.10144 6.25064 ]
# [ 0.0118587 0.011752 0.0112963 0.0103071]
# [-0.148752 1.9707 4.06861 5.83927 ]]
要从list
获得ndarray
:
result = df.as_matrix().T.tolist()