首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在多个excel工作表上循环以创建concat数据

在多个excel工作表上循环以创建concat数据
EN

Stack Overflow用户
提问于 2022-05-19 07:10:27
回答 2查看 43关注 0票数 0

我有一个excel表,它包含多张表格,每个表对应于1月至12月的一个特定指数(A、B、C、D、E、F、G)的1年月度数据。

例如:

代码语言:javascript
运行
复制
Sheet_2022
    Jan-2022 Feb-2022 Mar-2022 Apr-2022 May-2022 Jun-2022 Jul-2022 Aug-2022 Sep-2022 Oct-2022 Nov-2022 Dec-2022
A       1       6       9           5       8       5       8       4           9       4       0       3
B       6       5       9           5       8       5       8       4           9       4       0       3
C       32      6       9           5       8       5       8       4           9       4       0       3
D       1       7       9           5       8       5       8       4           9       4       0       3
E       4       8       9           5       8       5       8       4           9       4       0       3
F       8       9       9           5       8       5       8       4           9       4       0       3
代码语言:javascript
运行
复制
Sheet_2023
    Jan-2023 Feb-2023 Mar-2023 Apr-2023 May-2023 Jun-2023 Jul-2023 Aug-2023 Sep-2023 Oct-2023 Nov-2023 Dec-2023
A       2       6       5           5       8       5       8       4           9       4       0       3
B       5       5       34          5       8       5       8       4           9       4       0       3
C       32      6       3           5       8       5       8       4           9       4       0       3
D       8       7       2           5       8       5       8       4           9       4       0       3
E       9       8       5           5       8       5       8       4           9       4       0       3
F       0       9       8           5       8       5       8       4           9       4       0       3
代码语言:javascript
运行
复制
Sheet_2024
    Jan-2024 Feb-2024 Mar-2024 Apr-2024 May-2024 Jun-2024 Jul-2024 Aug-2024 Sep-2024 Oct-2024 Nov-2024 Dec-2024
A       1       6       2           5       8       5       8       4           9       4       0       3
B       6       5       3           5       8       5       8       4           9       4       0       3
C       32      6       4           5       8       5       8       4           9       4       0       3
D       1       7       5           5       8       5       8       4           9       4       0       3
E       4       8       6           5       8       5       8       4           9       4       0       3
G       8       9       7           5       8       5       8       4           9       4       0       3

我使用下面的代码读取所有工作表,并将其保存在相同的数据格式中:

代码语言:javascript
运行
复制
for i in result:
    df = pd.read_excel(filename_Value, sheet_name = i)
    df_Value.append(df)
df_Value = pd.concat(df_Value)

但这给出的数据格式有点不同:

代码语言:javascript
运行
复制
df_Value
    Jan-2022 Feb-2022 Mar-2022  Jan-2023 Feb-2023 Mar-2023  Jan-2024 Feb-2024 Mar-2024
A     1         6       9                       
B     6         5       9                       
C     32        6       9                       
D     1         7       9                       
E     4         8       9                       
F     8         9       9                       
A                                   2       6       5                           
B                                   5       5       34                          
C                                   32      6       3                           
D                                   8       7       2                           
E                                   9       8       5                           
F                                   0       9       8                           
A                                                               1       6       2           
B                                                               6       5       3           
C                                                               32      6       4           
D                                                               1       7       5           
E                                                               4       8       6           
G                                                               8       9       7           

我希望创建一个数据create,其中的值如下:

代码语言:javascript
运行
复制
df_Value
    Jan-2022 Feb-2022 Mar-2022  Jan-2023 Feb-2023 Mar-2023  Jan-2024 Feb-2024 Mar-2024
A     1         6       9           2       6       5           1       6       2                       
B     6         5       9           5       5       34          6       5       3                       
C     32        6       9           32      6       3           32      6       4                       
D     1         7       9           8       7       2           1       7       5                       
E     4         8       9           9       8       5           4       8       6                       
F     8         9       9           0       9       8                                   
G                                                               8       9       7                       

有更简单的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-05-19 07:29:19

熊猫concatmerge会做你想做的事情。

concat将更符合您的要求,因为合并一次只处理两个数据文件。

代码语言:javascript
运行
复制
from io import StringIO

import pandas as pd

t22_1 = StringIO("""\
i,Jan22,Feb22,Mar22
A,1,4,2
B,6,2,3
C,7,3,0
""")

t22_2 = StringIO("""\
i,Apr22,May22,Jun22
A,0,5,7
B,6,3,8
D,1,7,9
""")

df22_1 = pd.read_csv(t22_1, index_col="i")

df22_2 = pd.read_csv(t22_2, index_col="i")

pd.concat([df22_1, df22_2], axis=1)
# or
pd.merge(df22_1, df22_2, left_index=True, right_index=True, how="outer")

--
   Jan22  Feb22  Mar22  Apr22  May22  Jun22
i                                          
A    1.0    4.0    2.0    0.0    5.0    7.0
B    6.0    2.0    3.0    6.0    3.0    8.0
C    7.0    3.0    0.0    NaN    NaN    NaN
D    NaN    NaN    NaN    1.0    7.0    9.0

注意:我使用StringIO来避免编写文件,像现在一样继续加载数据。

票数 0
EN

Stack Overflow用户

发布于 2022-05-19 08:29:48

有办法你可以试试,但我不能保证这是一个更好的解决办法。

代码语言:javascript
运行
复制
data = {'jan21':[1,2,3,4],'feb21':[2,3,4,5]}
data1 = {'jan22':[1,2,3,4],'feb22':[2,3,4,5]}
df = pd.DataFrame(data)
df1 = pd.DataFrame(data1)

df[list(df1.columns)]=df1
print(df)

   jan21  feb21  jan22  feb22
0      1      2      1      2
1      2      3      2      3
2      3      4      3      4
3      4      5      4      5

由于您已经从同一个工作表中创建了所有数据格式,所以我可以考虑使用list(df.columns)将您的数据文件合并在一起。

代码语言:javascript
运行
复制
dataframe = pd.DataFrame()
for i in result:
    df = pd.read_excel(filename_Value, sheet_name = i)
    dataframe[list(df.columns)] = df
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72300098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档