如何在python中融合多个填充了日期的列?

如何在python中融合多个填充了日期的列?,python,pandas,Python,Pandas,我有这张桌子: a b c d e f 2019-08-06 2019-08-07 2019-08-08 g h i 1 2 3 4 5 6 7 8 9 10 11 12 因为我有34列日期,所以我想把日期列合并成一列。因此,在我的表格中将有如下列: date value 2019-08-06 7 2019-08-0

我有这张桌子:

a   b   c   d    e    f   2019-08-06   2019-08-07   2019-08-08   g    h    i
1   2   3   4    5    6        7           8           9        10    11   12
因为我有34列日期,所以我想把日期列合并成一列。因此,在我的表格中将有如下列:

date          value
2019-08-06     7
2019-08-07     8
2019-08-08     9
我试过的是:

a = df.columns.str.match("\d{2}-\d{2}-\d{2}")
cols = df.columns[a]
df.melt(id_vars = df.columns.difference(cols), var_name = "date", value_name = 'value')
但它不起作用,我在定义“cols”时出错了,它说:

Cannot mask with non-boolean array containing NA / NaN values
当我打印[a]时,我得到:

Index([False, False, False, False, False, False, False, False, False, False,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,   nan,
         nan,   nan, False, False, False, False, False, False, False, False],
      dtype='object')
我怎样才能解决这个问题


谢谢。

您的日期是4位数字,然后是2位,然后是2位,而不是2-2-2位-就像您的regexIt看起来更像是日期实际上是
datetime
类型。所以
str.match
返回
nan
not
False
。啊,我明白了,那么我应该如何更改我的脚本?
id\u vars=[col for coll in df.columns if isinstance(col,str)]
?它可以工作!谢谢