gpt4 book ai didi

Python如何将数据帧的两列组合成一个列表?

转载 作者:行者123 更新时间:2023-12-02 04:55:53 42 4
gpt4 key购买 nike

我有一个如下所示的数据框

df = 

index data1 data2
0 20 120
1 30 456
2 40 34

如何将上面 df 中的两列组合成一个列表,使得第一行元素先出现,然后是第二行。

我的预期输出

my_list = [20,120,30,456,40,34]

我的代码:

list1 = df['data1'].tolist()
list2 = df['data2'].tolist()

my_list = list1+list2

这不起作用?

最佳答案

底层的 numpy 数组是组织的 array([[row1], [row2], ..., [rowN]]) 所以我们可以ravel它,这应该很快。

df[['data1', 'data2']].to_numpy().ravel().tolist()
#[20, 120, 30, 456, 40, 34]
<小时/>

因为我很感兴趣:这里是所有建议的方法,加上另一个带链的方法,以及一些从 2 列与 DataFrame 的长度进行输出的时间安排。

import perfplot
import pandas as pd
import numpy as np
from itertools import chain

perfplot.show(
setup=lambda n: pd.DataFrame(np.random.randint(1, 10, (n, 2))),
kernels=[
lambda df: df[[0, 1]].to_numpy().ravel().tolist(),
lambda df: [x for i in zip(df[0], df[1]) for x in i],
lambda df: [*chain.from_iterable(df[[0,1]].to_numpy())],
lambda df: df[[0,1]].stack().tolist() # proposed by @anky_91
],
labels=['ravel', 'zip', 'chain', 'stack'],
n_range=[2 ** k for k in range(20)],
equality_check=np.allclose,
xlabel="len(df)"
)

enter image description here

关于Python如何将数据帧的两列组合成一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59997554/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com