【问题标题】:Python: Convert two columns of dataframe into one interposed list [duplicate]Python:将两列数据框转换为一个插入列表[重复]
【发布时间】:2020-04-16 08:16:40
【问题描述】:

如何将数据框中的两列转换为插入列表?

例如:我想做类似的事情

df

             Open  Close
Date
2016-12-23  1      2
2016-12-27  3      4
2016-12-28  5      6
2016-12-29  0      -1

someFunction(df)

>>> [1, 2, 3, 4, 5, 6, 0, -1]

我找到的最接近的是list(zip(df.Open, df.Close),但它会在列表中返回一堆元组,如下所示:[(1, 2), (3, 4), (5, 6), (0, -1)]

【问题讨论】:

标签: python python-3.x pandas dataframe


【解决方案1】:

IIUC

df.values.ravel().tolist()#df.to_numpy().ravel().tolist()

[1, 2, 3, 4, 5, 6, 0, -1]

【讨论】:

  • 我可以知道投反对票的原因吗?
【解决方案2】:

您可以获取值,并将其重塑为一维数组:

>>> df[['Open', 'Close']].values.reshape(-1)
array([ 1,  2,  3,  4,  5,  6,  0, -1])

或将其转换为列表:

>>> list(df[['Open', 'Close']].values.reshape(-1))
[1, 2, 3, 4, 5, 6, 0, -1]

【讨论】:

    【解决方案3】:

    您可以将列表推导与df.values 结合使用:

    [y for x in df.values for y in x]
    [1, 2, 3, 4, 5, 6, 0, -1]
    

    x 将是一个包含行的数组,y 将是这些行中的值

    【讨论】:

      【解决方案4】:

      试试这个:

      df.values.flatten()                                                                                                                                                                  
      # array([ 1,  2,  3,  4,  5,  6,  0, -1])
      

      【讨论】:

      • 啊,如果中间有一堆其他列怎么办?有没有比将前 2 列抓取到自己的 DF 中或删除其余列更 Python 的方式?
      • 如果你愿意,你可以选择你想要展平的列:df[['Open', 'Close']].values.flatten()
      • 这是:df.stack().values
      【解决方案5】:

      怎么样:

      df.stack().values
      #array([ 1,  2,  3,  4,  5,  6,  0, -1])
      

      【讨论】:

        猜你喜欢
        • 2013-01-27
        • 1970-01-01
        • 2019-05-25
        • 1970-01-01
        • 2021-01-08
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        相关资源
        最近更新 更多