【问题标题】:Converting dataframe of size (20, 500000) to another dataframe of different size将大小为 (20, 500000) 的数据帧转换为另一个不同大小的数据帧
【发布时间】:2023-02-02 23:13:29
【问题描述】:

我有一个包含 20 行和 500000 列的数据框。每行都是一个独特的模型,由 500000 个数字(列)组成。因此,我们有 20 个独特的模型。我想将此数据框转换为只有一列作为“值”的数据框,行应由 20 * 500000 行堆叠在一起组成,这样前 500000 行应属于第一个的 500000 个数字模型,然后是第二个模型的 500000 数字,依此类推。我使用了 pd.melt() 但这不是我要找的,因为它没有按照模型的顺序排列它们。

 import pandas as pd
 import numpy as np
 my_df = pd.DataFrame(np.random.randint(0,100,size=(20, 500000)))
 #reshaped_my_df = pd.melt(my_df)

【问题讨论】:

  • 你不能有一个大小为(20, 500, 000)的数据框你至少需要一个三维元素
  • @Sembei Norimaki 列数是 500000(500k)而不是 500!数据帧大小为 (20, 500000)

标签: python dataframe


【解决方案1】:

您需要做的就是reshape底层 numpy 数组并重新创建数据框:

import pandas as pd
import numpy as np
my_df = pd.DataFrame(np.random.randint(0,100,size=(20, 500000)))

reshaped_my_df = pd.DataFrame(my_df.values.reshape((-1, 1)), columns=['values'])

reshape 参数中的 -1 代表“使这个轴成为使重塑工作所需的任何大小”。

【讨论】:

  • 谢谢,但仍然不是我的意思。也许,我没有正确解释。基本上,我想将现有数据帧从宽格式(大列)转换为长格式(大行)以保持模型的顺序,这样重塑 df 的前 500000 行就是原始 df 的第一行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 2018-07-12
相关资源
最近更新 更多