python - 使用python的数据格式?

标签 python pandas dataframe anaconda unpivot

我是数据领域的新手,我有这样的问题,这是我的数据框

------------------------------------------------------
ErrorCD    ID    Freq1      Freq2     Freq3....
------------------------------------------------------
1          A      2          3           2
2          B      1          2           2
3          C      1          3           3

我希望它是这样的:

---------------------
ErrorCD  ID    Freq
---------------------
1        A      2
2        A      3
3        A      2
.....

如何使用 python 做到这一点?

最佳答案

你要堆叠

df.set_index(['ErrorCD', 'ID']).stack().reset_index(name='Freq')

   ErrorCD ID level_2  Freq
0        1  A   Freq1     2
1        1  A   Freq2     3
2        1  A   Freq3     2
3        2  B   Freq1     1
4        2  B   Freq2     2
5        2  B   Freq3     2
6        3  C   Freq1     1
7        3  C   Freq2     3
8        3  C   Freq3     3

我们可以去掉 FreqX

df.set_index(['ErrorCD', 'ID']).stack().reset_index(name='Freq').drop('level_2', 1)

   ErrorCD ID  Freq
0        1  A     2
1        1  A     3
2        1  A     2
3        2  B     1
4        2  B     2
5        2  B     2
6        3  C     1
7        3  C     3
8        3  C     3

另一种方法,重建

f = df.filter(regex='^Freq')
m = f.shape[1]
pd.DataFrame(dict(
    ErrorCD=df.ErrorCD.values.repeat(m),
    ID=df.ID.values.repeat(m),
    Freq=f.values.ravel()
))

   ErrorCD  Freq ID
0        1     2  A
1        1     3  A
2        1     2  A
3        2     1  B
4        2     2  B
5        2     2  B
6        3     1  C
7        3     3  C
8        3     3  C

你也可以使用pd.DataFrame.melt

df.melt(['ErrorCD', 'ID'], value_name='Freq').drop('variable', 1)

   ErrorCD ID  Freq
0        1  A     2
1        2  B     1
2        3  C     1
3        1  A     3
4        2  B     2
5        3  C     3
6        1  A     2
7        2  B     2
8        3  C     3

关于python - 使用python的数据格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653818/

相关文章:

python - 在python中使用bs4从网站的不同链接获取律师详细信息

python - 与 Pandas 的数据框串联

Python:复制并粘贴到特定的行和列

python - 根据日期比较从数据框中删除行

python - 如何安装 Vowpal Wabbit python 界面

python - 来自 python 的 bash 命令

python - Django 表单上的多对多字段以逗号分隔文本而不是多重选择

python - 属性错误: 'str' object has no attribute 'to_datetime'

python - 如何在 Python 中使用 panda 跳过读取空文件

python - 我可以/应该通过分配给属性来实现 Python 方法吗?