如何将多个列合并为一个列?

2024-04-18 12:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这张桌子:

a   b   c   d    e    f   19-08-06   19-08-07   19-08-08   g    h    i
1   2   3   4    5    6      7         8           9      10    11   12

我有34列日期,所以我想将日期列合并成一列

在Pyton我怎么做

提前谢谢


Tags: 桌子pyton
1条回答
网友
1楼 · 发布于 2024-04-18 12:25:19

可以使用^{}创建用于提取日期列的布尔掩码,然后使用^{}

m = df.columns.str.fullmatch("\d{2}-\d{2}-\d{2}")
cols = df.columns[m]

df.melt(value_vars=cols, var_name='date', value_name='vals')

       date  vals
0  19-08-06     7
1  19-08-07     8
2  19-08-08     9

如果您想在保留其他列的同时熔化,请尝试此操作

df.melt(
    id_vars=df.columns.difference(cols), var_name="date", value_name="vals"
)

  a  b  c  d  e  f   g   h   i      date  vals
0  1  2  3  4  5  6  10  11  12  19-08-06     7
1  1  2  3  4  5  6  10  11  12  19-08-07     8
2  1  2  3  4  5  6  10  11  12  19-08-08     9

这里我没有使用value_vars=cols,因为它是隐式使用的

value_vars: tuple, list, or ndarray, optional
   Column(s) to unpivot. If not specified, uses all columns that are 
   not set as id_vars.

相关问题 更多 >