python - 带有部分字符串的逆透视数据框

标签 python pandas

我有一个数据框 (totaldf) 这样:

           ...     Hom   ...    March Plans   March Ships   April Plans   April Ships   ...

0                  CAD   ...    12              5           4             13
1                  USA   ...    7               6           2             11
2                  CAD   ...    4               9           6             14
3                  CAD   ...    13              3           9             7
...                ...   ...    ...             ...         ...           ...

一年中的所有月份。我希望它是:

           ...     Hom   ...    Month   Plans    Ships    ...

0                  CAD   ...    March    12          5             
1                  USA   ...    March    7           6             
2                  CAD   ...    March    4           9             
3                  CAD   ...    March    13          3
4                  CAD   ...    April    4           13            
5                  USA   ...    April    2           11             
6                  CAD   ...    April    6           14             
7                  CAD   ...    April    9           7
...                ...   ...    ...      ...         ...

有没有不拆分字符串条目的简单方法? 我玩过 totaldf.unstack() 但由于有多个列,我不确定如何正确地重新索引数据帧。

最佳答案

如果将列转换为 MultiIndex,则可以使用堆栈:

In [11]: df1 = df.set_index("Hom")

In [12]: df1.columns = pd.MultiIndex.from_tuples(df1.columns.map(lambda x: tuple(x.split())))

In [13]: df1
Out[13]:
    March       April
    Plans Ships Plans Ships
Hom
CAD    12     5     4    13
USA     7     6     2    11
CAD     4     9     6    14
CAD    13     3     9     7

In [14]: df1.stack(level=0)
Out[14]:
           Plans  Ships
Hom
CAD April      4     13
    March     12      5
USA April      2     11
    March      7      6
CAD April      6     14
    March      4      9
    April      9      7
    March     13      3

In [21]: res = df1.stack(level=0)

In [22]: res.index.names = ["Hom", "Month"]

In [23]: res.reset_index()
Out[23]:
   Hom  Month  Plans  Ships
0  CAD  April      4     13
1  CAD  March     12      5
2  USA  April      2     11
3  USA  March      7      6
4  CAD  April      6     14
5  CAD  March      4      9
6  CAD  April      9      7
7  CAD  March     13      3

关于python - 带有部分字符串的逆透视数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54814462/

相关文章:

python - 去除字符串中的常见字母

python - 从函数的输出添加新列到 Pandas Dataframe

python - 如何通过比较两列来为 Pandas 表着色

python - 如何找出 pandas 数据框中的错误百分比?

list - 在 Pandas 中替换每个单元格的多个值

Python:如何在派生类之间共享类属性?

python - 倒数第二个致密层应该是什么?

python - Django:即使删除被阻止,也能成功删除消息

python - 在另一个函数中杀死 Python 中的子进程?

python - 如何在Python中过滤数据框中的行?