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 列对应值用于数据框