[英]Python Pandas CSV - reading
我有一個問題,我必須讀取一個 CSV 文件並從每一行中獲取值。
例如
Name Surname Sex Date
Franco Puppi Male 01/01/2022
Max Pezzali Male 03/4/2022
Fuffi Fuffi female 03/8/202
上面的內容是我組成的csv文件,我想繼續閱讀這種CSV文件,單獨處理每一列。 例如
dfin = pd.read_csv(var_an.csv)
for index1 in dfin.iterrows():
Name =
Surname =
Sex =
Date =
你會如何提取那個? 我嘗試使用 str(dfin["Name"]),但我得到的錯誤應該是元組內的整數值,然后我將“名稱”更改為 0,1,2 但在第一列說它是 ouf索引。 我錯了什么? 我在 xlsx 文件上取得了輕松的成功。
def analytics(var_an):
from termcolor import colored, cprint
import pandas as pd
dfin = pd.read_csv(var_an)
for index1 in dfin.iterrows():
print(index1)
cprint(f'Found on file : {var_an}', 'red')
# cprint(f'Obd = {obd} | pallet = {pallet} | loggerid = {loggerid} | system_date = {system_date} | system_time = {system_time} | house = {house} | hub = {hub}', 'on_green')
當我在上面執行此操作時,它會提取整行,但我無法單獨管理每個文件,例如
Name =
Surname =
Sex =
不確定你想要完成什么,但要從行中獲取值,你可以簡單地:
for idx, row in dfin.iterrows():
name = row['name']
surname = row['surname']
sex = row['sex']
...
這不是一個 CSV,它期望每行中有逗號分隔的值。 當您使用read_csv
時,您會得到一個包含名為“Name Surname Sex Date”的列的表。 把你的片段變成一個運行的腳本
import pandas as pd
import io
the_file = io.StringIO("""Name Surname Sex Date
Franco Puppi Male 01/01/2022
Max Pezzali Male 03/4/2022
Fuffi Fuffi female 03/8/202""")
dfin = pd.read_csv(the_file)
print(dfin.columns)
產出
1 columns: Index(['Name Surname Sex Date'], dtype='object')
因此,該文件沒有正確解析。 您可以將分隔符從逗號更改為正則表達式,並將所有空格用作列分隔符,您將獲得此示例數據的正確值
import pandas as pd
import io
the_file = io.StringIO("""Name Surname Sex Date
Franco Puppi Male 01/01/2022
Max Pezzali Male 03/4/2022
Fuffi Fuffi female 03/8/202""")
dfin = pd.read_csv(the_file, sep=r"\s+")
print(dfin.columns)
for i, row in dfin.iterrows():
print(f"====\nRow {i}:\n{row}")
Name = row["Name"]
Surname = row["Surname"]
Sex = row["Sex"]
Date = row["Date"]
print("Extracted:", Name, Surname, Sex, Date)
這得到了正確的東西:
Index(['Name', 'Surname', 'Sex', 'Date'], dtype='object')
====
Row 0:
Name Franco
Surname Puppi
Sex Male
Date 01/01/2022
Name: 0, dtype: object
Extracted: Franco Puppi Male 01/01/2022
====
Row 1:
Name Max
Surname Pezzali
Sex Male
Date 03/4/2022
Name: 1, dtype: object
Extracted: Max Pezzali Male 03/4/2022
====
Row 2:
Name Fuffi
Surname Fuffi
Sex female
Date 03/8/202
還不錯。 但是仍然存在一個巨大的問題。 如果其中一個人的名字中有空格怎么辦? Pandas 會將名稱的每個部分拆分為單獨的一列,並且解析會失敗。 您需要比現有格式更好的文件格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.