重塑数据表

问题描述 投票:0回答:1

我有一个数据表(Excel),其中包含以下标题:“日期”,“鲍勃”,“乔”,“简”。 数据头下方的数据为“1/1/2025”, 0, 0, 0; “2025 年 1 月 2 日”, 1, 1, 1; "1/3/2025", 1, 1, 1。日期表示星期几,数字表示该人当天是否工作 (1, 0)。

日期 鲍勃
2025 年 1 月 1 日 0 0 0
2025 年 1 月 2 日 1 1 1
2025 年 1 月 3 日 1 1 1

我需要转换表格,使标题为“日期”、“名称”、“开/关”。 例如 “2025 年 1 月 1 日”,“鲍勃”,0; “2025 年 1 月 2 日”,“鲍勃”,1; “2025 年 1 月 3 日”,“鲍勃”,1; “2025 年 1 月 1 日”,“乔”,0; “2025 年 1 月 2 日”,“乔”,1; “2025 年 1 月 3 日”,“乔”,1; "1/1/2025", "简", 0; “2025 年 1 月 2 日”,“简”,1; “1/3/2025”,“简”,1.

日期 姓名 开/关
2025 年 1 月 1 日 鲍勃 0
2025 年 1 月 1 日 鲍勃 1
2025 年 1 月 1 日 鲍勃 1
2025 年 1 月 2 日 0
2025 年 1 月 2 日 1
2025 年 1 月 2 日 1
2025 年 1 月 3 日 0
2025 年 1 月 3 日 1
2025 年 1 月 3 日 1

日期值来自“日期”列,名称来自列、标题,“开/关”值来自人员姓名下的数据。
我遇到的问题是新表中的 NAME 字段是旧表的标头名称 希望这是有道理的...提前致谢。

python excel datatable
1个回答
0
投票

要将数据从 Excel 读取到 Python 中,您需要使用以下代码行:

import pandas as pd

df = pd.read_excel("path_name.xlsx")

这会读取最常用于数据表、pandas 的库,并将文件中的数据读入名为

df
的变量中,该变量代表数据帧。

然后进行适当的变换,你可以这样做:

df = pd.melt(df, id_vars="Date").rename(columns={"variable": "Name", "value": "On/Off"})

我将解释该代码,以便您将来可以自己学习如何使用它。

pd.melt
是一种更改数据帧格式的方法。其他方法包括
df.stack
df.unstack
df.pivot
。坦率地说,我永远不记得哪个做了什么,所以我只是尝试所有这些,直到有东西给我我想要将数据帧转换成的内容。

设置

id_vars="Date"
只是意味着日期列保持不变而不是被转换,而其他列(带有人名的列)被转换。

然后我使用

.rename({...})
重命名新转换的列,并包含我要替换的列名称的字典。这给了我一个如下所示的数据框:

| 首页| 日期 |名称 |开/关| |--------|-------------|------|--------| | 0 | 2025 年 1 月 1 日 |鲍勃 | 0 | | 1 | 2025 年 1 月 2 日 |鲍勃 | 1 | | 2 | 2025 年 1 月 3 日 |鲍勃 | 1 | | 3 | 2025 年 1 月 1 日 |乔| 0 | 等等。

然后我可以使用以下方法将其写入 CSV:

df.to_csv("new_filepath.csv", index=False)

这会将表写到一个新的 CSV 中,不带索引列,就像您的示例一样。我希望一切都有意义!

© www.soinside.com 2019 - 2024. All rights reserved.