gpt4 book ai didi

python - 将多个 int 列/行合并为一个 numpy 数组(pandas 数据框)

转载 作者:行者123 更新时间:2023-12-03 21:10:18 29 4
gpt4 key购买 nike

我有一个包含几列和几行的 Pandas 数据框。我想将列合并为一,然后根据 id 合并行和 date成一。

目前我这样做:

df['matrix'] = df[[col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15,col16,col17,col18,col19,col20,col21,col22,col23,col24,col25,col26,col27,col28,col29,col30,col31,col32,col33,col34,col35,col36,col37,col38,col39,col40,col41,col42,col43,col44,col45,col46,col47,col48]].values.tolist()
df = df.groupby(['id','date'])['matrix'].apply(list).reset_index(name='matrix')

这给了我 list 形式的矩阵.
后来我把它转换成 numpy.ndarray使用:
df['matrix'] = df['matrix'].apply(np.array)

这是我的数据集的一小部分供引用:
id,date,col0,col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11,col12,col13,col14,col15,col16,col17,col18,col19,col20,col21,col22,col23,col24,col25,col26,col27,col28,col29,col30,col31,col32,col33,col34,col35,col36,col37,col38,col39,col40,col41,col42,col43,col44,col45,col46,col47,col48
16,2014-06-22,0,0,0,10,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
16,2014-06-22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
16,2014-06-22,2,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
16,2014-06-22,3,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0
16,2014-06-22,4,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0

虽然上面的代码对于小数据集工作正常,但有时对于大数据集会崩溃。具体 df['matrix'].apply(np.array)陈述。

有什么方法可以执行合并以获取 numpy.array ?这会节省很多时间。

最佳答案

首先不需要合并列。使用 拆分数据帧groupby 然后展平结果

matrix=df.set_index(['id','date']).groupby(['id','date']).apply(lambda x: x.values.flatten())

关于python - 将多个 int 列/行合并为一个 numpy 数组(pandas 数据框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54623210/

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