python - 如何在 Python 中{pivot|denormalize|manipulate} CSV 表

标签 python pandas dataframe

抱歉标题乱七八糟,我不知道如何表达这个问题。

假设我有一个表,其中前三列是 foo bar 和 baz。然后后面有一些任意列。我想操纵表格,使这些任意列都折叠在名为 num 的列下。

一个例子使这个更清楚

foo, bar, baz, 100, 101, 102, 103, 104,
1,   1,   1,  10,  11,  12,  13,  14,
1,   1,   2,  15,  16,  17,  18,  19,
1,   2,   1,  20,  21,  22,  23,  24,

此输入应转换为:

num, foo, bar, baz, value,
100,   1,    1,  1,    10,
100,   1,    1,  2,    15,
100,   1,    2,  1,    20,
101,   1,    1,  1,    11,
101,   1,    1,  2,    16,
101,   1,    2,  1,    21,
102,   1,    1,  1,    12,
102,   1,    1,  2,    17,
102,   1,    2,  1,    22,
...

我编写了一个自定义 Python 解决方案来执行此操作。这并不难,但我觉得这是在重新发明轮子。

有没有办法使用像 pandas 或其他一些表操作模块这样的库来实现这一点?

最佳答案

使用 pandas.melt :

res = pd.melt(df, id_vars=['foo', 'bar', 'baz'])

print(res)

    foo  bar  baz variable  value
0     1    1    1      100     10
1     1    1    2      100     15
2     1    2    1      100     20
3     1    1    1      101     11
4     1    1    2      101     16
5     1    2    1      101     21
6     1    1    1      102     12
7     1    1    2      102     17
8     1    2    1      102     22
9     1    1    1      103     13
10    1    1    2      103     18
11    1    2    1      103     23
12    1    1    1      104     14
13    1    1    2      104     19
14    1    2    1      104     24

关于python - 如何在 Python 中{pivot|denormalize|manipulate} CSV 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068259/

相关文章:

r - 将新的(较短的)列添加到 tibble 并扩展 tibble 以保持整洁

python - 连接两个具有不同索引级别数的 MultiIndex DataFrame

r - 根据 r 中列的值添加缺失值

python - 在 Pandas DataFrame 列上应用阈值

python - Qt - 暂时禁用所有事件或窗口功能?

python - 包含数组的 Pandas 系列

python - 如何将一行 append 到另一个数据框

python - 在 Python 中将位转换为字节

javascript - 在Python中使用for循环编写多个html文件

用于雅虎财经的 Python Pandas API - 如何获取出价、要价和其他字段