[英]Loading multiple .txt files to pandas dataframe with columns
我正在嘗試使用提供的以下格式讀取所有 the.txt 文件,並將它們連接到單個 pandas dataframe。
ID a123
Delivery_person_ID VADRES03DEL01
Delivery_person_Age 24.00
Delivery_person_Ratings 4.30
Name: 1, dtype: object
ID b123
Delivery_person_ID VADRES03DEL02
Delivery_person_Age 22.00
Delivery_person_Ratings 4.10
Name: 2, dtype: object
下面是代碼 -
folder_path = '/drive/My Drive/dataset/train'
file_list = glob.glob(folder_path + "/*.txt")
main_dataframe = pd.read_fwf(file_list[0], header=None)
for i in range(1,len(file_list)):
df = pd.read_fwf(file_list[i], header=None)
main_dataframe = pd.concat([main_dataframe, df], axis = 0)
print(main_dataframe.head(30))
Output:
0 1
0 ID a123
1 Delivery_person_ID VADRES03DEL01
2 Delivery_person_Age 24.00
3 Delivery_person_Ratings 4.30
4 Name: 1, dtype: object NaN
0 ID b123
1 Delivery_person_ID VADRES03DEL02
2 Delivery_person_Age 22.00
3 Delivery_person_Ratings 4.10
4 Name: 2, dtype: object NaN
但我需要為每個人逐行列出 dataframe。 例如,我想要以下格式 -
ID Delivery_person_ID Delivery_person_Age Delivery_person_Ratings
0 a123 VADRES03DEL01 24.00 4.30
1 b123 VADRES03DEL02 22.00 4.10
所以,輸入文本文件很奇怪——這段代碼應該處理
# Read in text file
df = pd.read_fwf("./test.txt")
# Remove the "Name: 1, dtype: object"
df = df.drop(df.index[3])
# Transpose it
df = df.T
# Rename the columns correctly
df.columns = df.iloc[0]
# Remove the column names from the data
df = df.drop(df.index[0])
如下所示的輸入文本文件:
ID a123
Delivery_person_ID VADRES03DEL01
Delivery_person_Age 24.00
Delivery_person_Ratings 4.30
Name: 1, dtype: object
將轉換為:
ID Delivery_person_ID Delivery_person_Age Delivery_person_Ratings
a123 VADRES03DEL01 24.00 4.30
從這里,您可以對每個文本文件執行相同的操作,然后執行 pd.concat() 將新的文本文件 dataframe 合並到主 dataframe,但從您的代碼中我可以看到您已經知道如何執行此操作。
將文本文件讀取到pandas dataframe
后,對其進行transform
folder_path = '/drive/My Drive/dataset/train'
file_list = glob.glob(folder_path + "/*.txt")
main_dataframe = pd.read_fwf(file_list[0], header=None).T
for i in range(1,len(file_list)):
df = pd.read_fwf(file_list[i], header=None).T
main_dataframe = pd.concat([main_dataframe, df], axis = 0)
print(main_dataframe.head(30))
編輯
import pandas as pd
import glob
folder_path = '/drive/My Drive/dataset/train'
file_list = glob.glob(folder_path + "/*.txt")
def read_clean_df(file_name) -> pd.DataFrame:
df = pd.read_fwf(file_name, header=None).T
df.pop(4)
df.columns = df.iloc[0]
df = df[1:]
df.reset_index(drop=True, inplace=True)
return df
main_dataframe = read_clean_df(file_list[0])
for file_name in file_list[1:]:
df = read_clean_df(file_list[0])
main_dataframe = pd.concat([main_dataframe, df], axis=0)
main_dataframe.reset_index(drop=True, inplace=True)
print(main_dataframe.head(30))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.