Python 数据帧未正确求和
我有一个pdf,我已经用tabla转换成了熊猫数据框。因为有很多我不感兴趣的信息,所以我使用了tabla的area方法对数据集进行了格式化,这样我就可以访问我感兴趣的两个字段(分别在Number和Hours列中的Employee ID和Total Hours per Pay Period)。我使用几个for循环和if语句来查找我感兴趣的值周围的字符串。代码应该是每个员工id的工时总和。请注意,有两个数据框,因为我无法使用tabla将id编号与支票编号分开,因此一个数据框中的支票编号字符串为空 使用附近的值进行提取的一个示例是,工时(在“小时”列中)始终位于名称列中带有“Check Deposition:”的行上方一行。对于大多数脚本来说,这很好,但有两次它似乎跳过了它要检查的字符串,而转到下一个“Check deposted:”实例。奇怪的是,对于其中一个,循环应该先转到下一个员工ID。它会再次使用第一个ID号,但会获取第二个ID号的第一个工时值。然后,第二个ID启动并为自己获取相同的第一个数字(这是正确的),但随后会跳过一个工作小时 知道我做错了什么吗?谢谢大家!Python 数据帧未正确求和,python,pandas,tabula,Python,Pandas,Tabula,我有一个pdf,我已经用tabla转换成了熊猫数据框。因为有很多我不感兴趣的信息,所以我使用了tabla的area方法对数据集进行了格式化,这样我就可以访问我感兴趣的两个字段(分别在Number和Hours列中的Employee ID和Total Hours per Pay Period)。我使用几个for循环和if语句来查找我感兴趣的值周围的字符串。代码应该是每个员工id的工时总和。请注意,有两个数据框,因为我无法使用tabla将id编号与支票编号分开,因此一个数据框中的支票编号字符串为空 使
import tabula
from tabula.io import read_pdf
import pandas as pd
import numpy as np
from itertools import islice
# Read PDF into list of DataFrame
#dataframe = tabula.read_pdf("Payroll register Dept 2020 04.01.20 - 03.31.21.pdf", pages='all')
#tabula.convert_into("Payroll register Dept 2020 04.01.20 - 03.31.21.pdf", "output.csv", columns = (100, 190, 250, 300,400), output_format="csv", pages='all', guess=False)
df1 = pd.read_csv("output.csv", skiprows = 6)
output = pd.DataFrame(columns = ["Employee ID", "Hours Worked"])
_id = []
_hours = []
_check = []
print(output)
df = df1.replace(np.nan, '', regex=True)
for e, i in enumerate(df["Name"]):
if df["Name"].loc[e]== "Check Printed:" or 'Site Mana'in df["Name"][e]:
df["Number"].loc[e] = ''
df.to_csv("Output_2.csv")
for ele, num in enumerate(df["Number"]):
if num != '' and num.isnumeric() and num not in _id:
_id.append(num)
for index, row in islice(df.iterrows(), ele, None):
if "Check Printed:" in df["Name"][index]:
_hours.append(float(df["Hours"].iloc[index -1]))
_check.append(df1["Number"][index])
break
elif num != '' and num.isnumeric() and num in _id:
for index, row in islice(df.iterrows(), ele, None):
if "Check Printed" in df["Name"][index] and df1["Number"][index] not in _check:
print(df1["Number"][index])
_hours[_id.index(num)] += float(df["Hours"].iloc[index -1])
print(_hours[_id.index(num)])
_check.append(df1["Number"][index])
break
output["Employee ID"] = _id
output["Hours Worked"] = _hours
print(output)
为了产生它,请分享数据,或模拟数据,可以帮助复制这个错误,你看到的。根据这里的内容,我认为你的循环不知何故失去了同步。