Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将名称中带有日期的列转换为单独的行_Python_Pandas_Data Transform - Fatal编程技术网

在Python中将名称中带有日期的列转换为单独的行

在Python中将名称中带有日期的列转换为单独的行,python,pandas,data-transform,Python,Pandas,Data Transform,我已经得到了答案,想知道如何在Python中实现它 假设我们有一个如下的熊猫数据帧: 2019Q1 2019Q2 2019Q3 0 1 2 3 Year Quarter Value 2019 1 1 2019 2 2 2019 3 3 作为pd进口熊猫 d=pd.DataFrame{'2019Q1':[1],'2019Q2':[2],'2019Q3':[3]} 如

我已经得到了答案,想知道如何在Python中实现它

假设我们有一个如下的熊猫数据帧:

   2019Q1  2019Q2  2019Q3
0       1       2       3
Year    Quarter    Value
2019    1          1
2019    2          2
2019    3          3
作为pd进口熊猫 d=pd.DataFrame{'2019Q1':[1],'2019Q2':[2],'2019Q3':[3]} 如下所示:

   2019Q1  2019Q2  2019Q3
0       1       2       3
Year    Quarter    Value
2019    1          1
2019    2          2
2019    3          3
如何将其转换为如下所示:

   2019Q1  2019Q2  2019Q3
0       1       2       3
Year    Quarter    Value
2019    1          1
2019    2          2
2019    3          3
用于expand=True的多索引,然后通过重塑,最后一次数据清理使用和:

感谢@Jon Clements提供另一个解决方案:

df = (d.melt()
       .variable
       .str.extract('(?P<Year>\d{4})Q(?P<Quarter>\d)')
       .assign(Value=d.T.values.flatten()))
print (df)
   Year Quarter  Value
0  2019       1      1
1  2019       2      2
2  2019       3      3
用于expand=True的多索引,然后通过重塑,最后一次数据清理使用和:

感谢@Jon Clements提供另一个解决方案:

df = (d.melt()
       .variable
       .str.extract('(?P<Year>\d{4})Q(?P<Quarter>\d)')
       .assign(Value=d.T.values.flatten()))
print (df)
   Year Quarter  Value
0  2019       1      1
1  2019       2      2
2  2019       3      3
与和一起使用:

如果您关心列的顺序,请使用reindex:

与和一起使用:

如果您关心列的顺序,请使用reindex:


不完全确定,因为它需要测试,但类似于:df.melt.variable.str.extractor'?P\d{4}Q?P\d'.assignValue=df.values.T应该可以做到这一点…好的。。。我很快就了解了上面的内容,我认为:df.melt.variable.str.extract'?P\d{4}Q?P\d'.assignValue=df.values.flatte应该可以做到:这样它可以扩展到>1row@JonClements-谢谢,在展平-d=pd之前也需要转置。数据帧{'2019Q1':[1,8],'2019Q2':[2,9],'2019Q3':[3,0]}不完全确定,因为需要测试,但是像这样的东西:df.melt.variable.str.extractor'?P\d{4}Q?P\d'.assignValue=df.values.T应该会起作用…好的。。。我很快就了解了上面的内容,我认为:df.melt.variable.str.extract'?P\d{4}Q?P\d'.assignValue=df.values.flatte应该可以做到:这样它可以扩展到>1row@JonClements-谢谢,在展平-d=pd之前也需要进行转置。数据帧{'2019Q1':[1,8],'2019Q2':[2,9],'2019Q3':[3,0]}
   Year Quarter  Value
0  2019       1      1
0  2019       2      2
0  2019       3      3