簡體   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