每當我的文本檔案在文本檔案的末尾有空的新行時,我在 pandas 資料框中輸出的串列將在串列的后面有逗號,如何確保即使文本檔案中有空的新行,熊貓資料框中的串列輸出不會在串列后面有逗號嗎?
from pathlib import Path
import pandas as pd
files = Path('data/').glob('*')
df = list()
for file in files:
df.append(file.read_text().replace('\n', ',')) # the file is opened and closed
df = pd.DataFrame(df, columns = ['fruits'])
df = df['fruits'].str.split(',').to_frame()
df
文本檔案 1
apple
banana
orange
<- empty new line here
<- empty new line here
文本檔案 2
kiwi
mango
grapes
berry
coconut
電流輸出
fruits
0 [kiwi, mango, grapes, berry, coconut]
1 [apple, banana, orange, ,]
預期產出
fruits
0 [kiwi, mango, grapes, berry, coconut]
1 [apple, banana, orange]
我有什么有效的方法來解決上述問題以獲得預期的輸出,而無需進入單個文本檔案并手動洗掉尾隨的空新行?謝謝你。
uj5u.com熱心網友回復:
以下是您如何做到這一點的兩種選擇:
(1) file.read().splitlines() 為每一行創建一個包含一個元素的串列(末尾的每個換行符都是一個空字串,您可以通過過濾將其洗掉。
import pandas as pd
from pathlib import Path
files = Path('data/').glob('*.txt')
all_files=[]
for file in files:
with open(file, 'r') as f:
data = list(filter(None, f.read().splitlines()))
all_files.append(data)
df = pd.DataFrame({
'fruits' : all_files
})
print(df)
fruits
0 [apple, banana, orange]
1 [kiwi, mango, grapes, berry, coconuts]
或 (2) 您使用pd.read_csv
import pandas as pd
from pathlib import Path
files = Path('data/').glob('*.txt')
all_files=[]
for file in files:
data = pd.read_csv(file,header=None)[0].tolist()
all_files.append(data)
df = pd.DataFrame({
'fruits' : all_files
})
#same output as (1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/491318.html
標籤:Python python-3.x 熊猫 数据框
