假设以下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上是可变的.
您可以融化数据框:
>>> 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