【问题标题】:How can I convert columns of a pandas DataFrame into a list of lists?如何将 pandas DataFrame 的列转换为列表列表?
【发布时间】:2013-02-13 06:26:41
【问题描述】:

我有一个包含多列的 pandas DataFrame。

2u    2s    4r     4n     4m   7h   7v
0     1     1      0      0     0    1
0     1     0      1      0     0    1
1     0     0      1      0     1    0
1     0     0      0      1     1    0
1     0     1      0      0     1    0
0     1     1      0      0     0    1

我想要做的是将这个pandas.DataFrame 转换成如下列表

X = [
     [0, 0, 1, 1, 1, 0],
     [1, 1, 0, 0, 0, 1],
     [1, 0, 0, 0, 1, 1],
     [0, 1, 1, 0, 0, 0],
     [0, 0, 0, 1, 0, 0],
     [0, 0, 1, 1, 1, 0],
     [1, 1, 0, 0, 0, 1]
    ]

2u 2s 4r 4n 4m 7h 7v 是列标题。在不同的情况下会发生变化,所以不要在意。

【问题讨论】:

  • 对于将来偶然发现这个问题的任何人:如果您的数据与 OP 中的数据相似,看似同质的网格/数组结构,Pandas DataFrame 可能不是正确的数据选择结构体。 NumPy 数组可能更合适,甚至只是一个普通的 Python 列表。
  • 这能回答你的问题吗? Pandas DataFrame to List of Lists

标签: python dataframe pandas


【解决方案1】:

它看起来像一个转置矩阵:

df.values.T.tolist()

[list(l) for l in zip(*df.values)]

[[0, 0, 1, 1, 1, 0],
 [1, 1, 0, 0, 0, 1],
 [1, 0, 0, 0, 1, 1],
 [0, 1, 1, 0, 0, 0],
 [0, 0, 0, 1, 0, 0],
 [0, 0, 1, 1, 1, 0],
 [1, 1, 0, 0, 0, 1]]

【讨论】:

  • 这会返回一个列表的列表。 list(df.values.flatten()) 完成这项工作。
  • @pms 通过查看 OP 所需的输出,看起来他们确实想要创建一个列表列表。但是您可能会将您的评论转换为答案,因为它可能会被一些愚蠢的标志删除。此外,我个人发现您的评论非常有用,因为我正在寻找单一列表选项。最后,这可能会被修改为list(df.values.T.flatten()),因此这些值将按列保存。
  • @pms,非常好。您还可以使用df.values.flatten().tolist() 获取列表注意:无论您想要列表列表还是要避免列表列表,Google 都会将您带到这里:我想避免列表列表,.flatten() 就是这样。
【解决方案2】:

要将 Dataframe 更改为列表,请使用 tolist() 函数进行转换 假设我有 Dataframe df

要更改为列表,您可以简单地使用 tolist() 函数

df.values.tolist()

您还可以通过使用将特定列更改为列表

df['column name'].values.tolist()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-01
    • 2013-11-04
    • 2022-01-23
    • 2019-11-28
    • 2017-08-15
    • 2023-04-03
    • 2020-09-01
    • 2021-11-10
    相关资源
    最近更新 更多