Python Pandas |为每一列创建单独的列表
Python Pandas | Create separate lists for each of the columns
我不确定如何使用 tolist 来实现以下目标。我有一个这样的数据框:
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()
如果有办法做到这一点,请告诉我。谢谢。
添加.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]
如果你想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
,这样会return 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 ]]
从ndarray
得到list
:
result = df.as_matrix().T.tolist()
也可以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)
我不确定如何使用 tolist 来实现以下目标。我有一个这样的数据框:
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()
如果有办法做到这一点,请告诉我。谢谢。
添加.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]
如果你想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
,这样会return 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 ]]
从ndarray
得到list
:
result = df.as_matrix().T.tolist()
也可以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)