python 需要来自两个不同工作表的唯一值

hm2xizp9  于 2023-01-08  发布在  Python
关注(0)|答案(2)|浏览(91)

您能否帮助我获得考虑两个工作表(员工薪金- Nov-22.CSV /员工薪金- Dec-22.CSV)的输出。我想在新的输出文件中获得每列的唯一名称值。

2izufjch

2izufjch1#

欢迎来到stackoverflow,你需要发布你迄今为止为解决这个问题所做的任何工作。
为了回答你的问题,这可以做的是excel与透视表。但如果你正在寻找一个Pandas的方法...我已经创建了2个像你一样的数据框架

import pandas as pd
import numpy as np

df1 = pd.DataFrame(
      { "Name": ['Govind', 'Chetan', 'Rahul'],
        "City": ['Mumbai', 'Banglore', 'Pune'],
        "Salary": [1, 1, 1] })

df2 = pd.DataFrame(
      { "Name": ['Govind', 'Chetan', 'Kalpesh'],
        "City": ['Mumbai', 'Banglore', 'Pune'],
        "Salary": [1, 1, 1] })

然后可以使用concat将它们连接起来

df = pd.concat([df1, df2], axis=0)
df

并且可以使用groupby()和reset_index()来获取所需的内容

df.groupby(['Name','City'])['Salary'].sum().reset_index()

v1l68za4

v1l68za42#

您可以将pandas.read_excelsheet_name=None结合使用,一次读取所有工作表,然后将生成的 Dataframe 字典传递给pandas.concat,最后使用Groupby.sum进行聚合:

import pandas as pd

out = (
         pd.concat(pd.read_excel("/input_spreadsheet.xlsx", sheet_name=None), ignore_index=True)
              .groupby(["Name", "City"], as_index=False)["Salary"].sum()
      )

之后,如果需要,可以使用pandas.DataFrame.to_excel创建新的电子表格和/或使用pandas.DataFrame.to_csv创建(.csv)文件:

out.to_excel("/output_spreadsheet.xlsx", sheet_name="Emp Salary (Total).xlsx", index=False)
out.to_csv("/output_csvfile.csv", sheet_name="Emp Salary (Total).csv", sep=",", index=False) #sep="," by default
#输出:
print(out)

        Name       City  Salary
0     Chetan  Bangalore   60000
1     Dipesh       Pune   50000
2     Govind     Mumbai  200000
3    Kalpesh    Kolkata   40000
4      Rahul    Kolkata   40000
5    Santosh       Pune   50000
6  Siddharth  Hyderabad   50000

相关问题