当前位置: 首页 > 知识库问答 >
问题:

将列转换为行[重复]

昌勇锐
2023-03-14

我有以下Python数据帧:

id| country  | 2016 | 2017 | 2018
--+----------+------+------+------
0 | saudi    | A    | null | B
1 | china    | C    | A    | B
2 | pakistan | null | null | C

我想:

id| country  | year | value
--+----------+------+------
0 | saudi    | 2016 | A
1 | saudi    | 2018 | B
2 | china    | 2016 | C
3 | china    | 2017 | A
4 | china    | 2018 | B
5 | pakistan | 2018 | C

共有2个答案

朱兴学
2023-03-14

是的,你也可以使用unstackdf2=df.unstack()然后df2.reset_index()

赵俊晤
2023-03-14

您可以使用df.melt

df.melt(['id','country'], df.columns[2:]).dropna()

    id  country variable  value
0   0   saudi     2016     A
6   0   saudi     2018     B
1   1   china     2016     C
4   1   china     2017     A
7   1   china     2018     B
8   2   pakistan  2018     C

如果需要,只需添加。对值('id')进行排序

或者可以使用堆栈

df.set_index(['id','country']).stack().to_frame()

然后.reset_index()如果你愿意

看起来使用堆栈会更有效率:

melt: 11.3 ms ± 798 µs per loop (mean ± std. dev. of 3 runs, 1000 loops each)

stack: 9.18 ms ± 594 µs per loop (mean ± std. dev. of 3 runs, 1000 loops each)

 类似资料:
  • 我尝试在中使用,但它将聚合函数作为参数,我不想提供。 我怎样才能做到这一点。

  • 我是数据科学的初学者,我正在尝试使用Pandas来旋转此数据框架: 所以它变成这样:(标签应该变成列,文件路径变成行。) “标签”列是一组或一类文件路径。我想把它转换成这样一种方式,它适合这个函数:tf。Keras.preprocessing.image.flow_from_dataframe 提前感谢所有帮助我的人。

  • 我有一个这样的数据框, 因为传感器的数量是可变的,所以我决定把它们写成行,比如, 我想知道是否有任何方便的方法将df1转换为df2? 附录:为方便起见,df1代码,

  • 我有以下数据帧: 我想这样。 堆叠/卸载似乎不工作。

  • 我有一张如下的桌子: 如何将其转换为:

  • 问题内容: 考虑下面的示例,其中有一个包含人员记录的 Person 表和一个包含链接到人员的可选属性的 PersonAttribute 表: Table: Person Table PersonAttribute 我将如何编写一个查询,使所有具有属性的人都像列一样返回?我需要的结果集是: 因此,从本质上讲,我需要编写一个查询,该查询将获取所有带有所有唯一属性键的人记录,这些键被转换为具有每个人记录