Python:将两列数据框转换为一个插入列表[重复]

Posted

技术标签:

【中文标题】Python:将两列数据框转换为一个插入列表[重复]【英文标题】:Python: Convert two columns of dataframe into one interposed list [duplicate] 【发布时间】: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)]

【问题讨论】:

这能回答你的问题吗? Pythonic way to combine two lists in an alternating fashion? 【参考方案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])

【讨论】:

以上是关于Python:将两列数据框转换为一个插入列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将两列强制转换为 R 中的 1 列因子和 1 列对应值用于数据框

无法将两列添加到用户表单中的列表框

如何将两列“计数”矩阵转换为 R 中的二进制向量? [复制]

如何将两列转换为用于计数矢量化的序列?

将字典转换为两列熊猫数据框[重复]

将python数据框转换为列表[重复]