繁体   English   中英

Pandas dataframe 仅读取第一个值,其他所有值均为 NaN

[英]Pandas dataframe only reading first value, NaN for everything else

我正在尝试使用 pandas 读取 csv ,然后插入 SQL 表中。 当我打印(数据)时,我正在正确读取 csv 中的数据,但是一旦我将其添加到 dataframe 中,它只会读取第一列,并为 Z628CB5675FF524F3E7197B 中的每个其他值插入 NaN。 代码和output如下;

data = pd.read_csv (localFilePath)
print(data)
df = pd.DataFrame(data, columns= ['Date','EECode','LastName','FirstName', \
           'HomeDepartmentCode','HomeDepartmentDesc','PayClass','InPunchTime', \
           'OutPunchTime','DepartmentCode','DepartmentDesc','JobCodesCode', \
           'JobCodesDesc','TeamCode','TeamDesc','EarnCode'])
print(df)

for row in df.itertuples():
    SQLInsert = ('''
                INSERT INTO [Reporting].[dbo].[Paycom_Missing_Punch] 
                (Date, EECode, LastName, FirstName, HomeDepartmentCode, 
                HomeDepartmentDesc, PayClass, InPunchTime, OutPunchTime, 
                DepartmentCode, DepartmentDesc, JobCodesCode, JobCodesDesc, 
                TeamCode, TeamDesc, EarnCode)
                VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
                '''
                )
     args = row.Date, row.EECode, row.LastName, row.FirstName, \
                row.HomeDepartmentCode, row.HomeDepartmentDesc, row.PayClass, row.InPunchTime, \
                row.OutPunchTime, row.DepartmentCode, row.DepartmentDesc, row.JobCodesCode, \
                row.JobCodesDesc, row.TeamCode, row.TeamDesc, row.EarnCode
                          
    #print(SQLInsert) 
    #print(args)
    cursor.execute(SQLInsert, args)     
conn.commit()

output 当我打印(数据)时;

         Date  EE Code  ...               Team Desc Earn Code
0  01/21/2021     1435  ...             Indiana DWD       NaN
1  01/21/2021     1435  ...             Indiana DWD       NaN
2  01/22/2021     1180  ...             Supervisors       NaN
3  01/21/2021     1664  ...  Technical Support Desk       NaN
4  01/21/2021     1078  ...             Supervisors       NaN

output 一旦我将它添加到 dataframe;

         Date  EECode  LastName  ...  TeamCode  TeamDesc  EarnCode
0  01/21/2021     NaN       NaN  ...       NaN       NaN       NaN
1  01/21/2021     NaN       NaN  ...       NaN       NaN       NaN
2  01/22/2021     NaN       NaN  ...       NaN       NaN       NaN
3  01/21/2021     NaN       NaN  ...       NaN       NaN       NaN
4  01/21/2021     NaN       NaN  ...       NaN       NaN       NaN

我认为问题在于我如何将值传递给 dataframe,但从我读过或看到的所有内容来看,我这样做的方式看起来是正确的。

问题是你做df的方式。 您首先使用您的data创建 dataframe 。 然后,您尝试使用不存在的名称创建另一个 dataframe。 要解决您的问题,只需执行以下操作:

>>> col_names = ['Date','EECode','LastName','FirstName', \
           'HomeDepartmentCode','HomeDepartmentDesc','PayClass','InPunchTime', \
           'OutPunchTime','DepartmentCode','DepartmentDesc','JobCodesCode', \
           'JobCodesDesc','TeamCode','TeamDesc','EarnCode']

>>> df = pd.read_csv(localFilePath)
>>> df.columns = col_names

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM