【发布时间】:2021-06-19 03:38:34
【问题描述】:
我是 Python 和 Pandas 的初学者,我想将多维表转换为扁平表。目前看起来如下
| Day | Lukas | Steve | ||
|---|---|---|---|---|
| BBnr | Comments | BBnr | Comments | |
| 1 | XXXX1 | 2PM | XXXX3 | 9PM |
| 2 | XXXX2 | 5:30PM | XXXX4 | 7PM |
我希望它是这样的:
| Day | Seller | BBnr | Comments |
|---|---|---|---|
| 1 | Lukas | XXXX1 | 2PM |
| 1 | Steve | XXXXX3 | 9PM |
| 2 | Lukas | XXXX2 | 5:30PM |
| 2 | Steve | XXXXX4 | 7PM |
有什么想法吗?到目前为止,我用 pandas Melt 和 unstack 尝试过,但没有成功
这是我当前的代码:
import pandas as pd
df = pd.read_excel('Book1.xlsx', sheet_name="Sheet1", header=[0,1], index_col=[0])
melt = df.melt()
print(melt)
和电流输出:
Dag NaN value
0 LUCAS BBnr XXXX1
1 LUCAS BBnr XXXX2
2 LUCAS Comments 2PM
3 LUCAS Comments 5:30PM
4 STEVE BBnr XXXX3
5 STEVE BBnr XXXX4
6 STEVE Comments 9Pm
7 STEVE Comments 7PM
df.head() 融化前:
Dag LUCAS STEVE
BBnr Comments BBnr Comments
1 XXXX1 2PM XXXX3 9Pm
2 XXXX2 5:30PM XXXX4 7PM
【问题讨论】:
-
.stack()? Appart 从那,你得到了哪些错误?原则上melt()应该也能正常工作 -
@maow 您好,感谢您的回复!我在帖子中添加了当前代码和输出!
-
在熔炼操作之前你能不能打印
df.head()?我想尝试一些事情:) -
@maow 也添加了它:) ty!!
-
我得到了与@Serge Ballesta 相同的答案:D 诀窍是将
level=0传递给stack,以便它只熔化名称并保持列 BBnr 和 Comments 完整