当前位置:  开发笔记 > 编程语言 > 正文

Pandas DataFrame将多个列值堆叠为单个列

如何解决《PandasDataFrame将多个列值堆叠为单个列》经验,为你挑选了1个好方法。

假设以下DataFrame:

  key.0 key.1 key.2  topic
1   abc   def   ghi      8
2   xab   xcd   xef      9

如何将所有key.*列的值组合到单个列'key'中,该列与对应于key.*列的主题值相关联?这是我想要的结果:

   topic  key
1      8  abc
2      8  def
3      8  ghi
4      9  xab
5      9  xcd
6      9  xef

请注意,key.N列的数量在某些外部N上是可变的.



1> Alexander..:

您可以融化数据框:

>>> keys = [c for c in df if c.startswith('key.')]
>>> pd.melt(df, id_vars='topic', value_vars=keys, value_name='key')

   topic variable  key
0      8    key.0  abc
1      9    key.0  xab
2      8    key.1  def
3      9    key.1  xcd
4      8    key.2  ghi
5      9    key.2  xef

它还为您提供密钥的来源.


From v0.20,melt是该类的第一类功能pd.DataFrame:

>>> df.melt('topic', value_name='key').drop('variable', 1)

   topic  key
0      8  abc
1      9  xab
2      8  def
3      9  xcd
4      8  ghi
5      9  xef

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有