python - 取消堆叠数据框并保留列

标签 python pandas dataframe unpivot

我有一个过于“紧凑”的 DataFrame。 DataFrame 目前是这样的:

> import numpy as np
> import pandas as pd

> df = pd.DataFrame({'foo': ['A','B'],
               'bar': ['1', '2'],
               'baz': [np.nan, '3']})
  bar  baz foo
0   1  NaN   A
1   2    3   B

我需要把它“拆开”成这样:

> df = pd.DataFrame({'foo': ['A','B', 'B'],
               'type': ['bar', 'bar', 'baz'],
               'value': ['1', '2', '3']})

  foo type value
0   A  bar     1
1   B  bar     2
2   B  baz     3

无论我如何尝试转向,我都无法做到正确。

最佳答案

使用 melt()方法:

In [39]: pd.melt(df, id_vars='foo', value_vars=['bar','baz'], var_name='type')
Out[39]:
  foo type value
0   A  bar     1
1   B  bar     2
2   A  baz   NaN
3   B  baz     3

In [38]: pd.melt(df, id_vars='foo', value_vars=['bar','baz'], var_name='type').dropna()
Out[38]:
  foo type value
0   A  bar     1
1   B  bar     2
3   B  baz     3

关于python - 取消堆叠数据框并保留列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44245834/

相关文章:

java - ClassNotFound:apache.hadoop.io.ImmutableBytesWritable使用Python将Spark与Hbase集成

python - Pygame在while true循环中显示图像内存问题

python - 如何检查文件是否存在于谷歌云存储中?

python - 将 Pandas (多)索引解析为日期时间

r - 如何删除某些句子后面的文字?

python - impala shell,带大写字母的 shell 命令

python-3.x - Pandas .resample 或 .asfreq 填充缺失的日期时间条目

python - 在 Pandas 中,如何获取多索引级别中出现的分数?

r - 新创建的数据框丢失了其向量类别的标签

python - Pandas 数据框中的条件列算法