我正在尝试从.txt文件创建e数据框(具有三列的表)。
我准备了txt文件,因此其格式为:
汽车
奥迪A4 10000
奥迪A6 12000
....
公共汽车
大众运输车15000
...
露营
大众加利福尼亚20000
...
这是整个代码:
cars = ""
with open("cars.txt", "r", encoding = "utf-8") as f:
cars = f.read()
print(cars)
def generate_car_table(table):
table = pd.DataFrame(columns = ['category', 'model','price'])
return table
cars_table = generate_car_table(cars)
我希望有一个包含三列的表格-类别,它将显示车辆是否为汽车/公共汽车/露营车,型号和价格。
提前谢谢!
答案 0 :(得分:1)
记住您的评论后,我发现我误解了您的问题。
如果您是文本文件(cars.txt
),则如下所示:
Car
Audi A4 10000
Audi A6 12000
Bus
VW Transporter 15000
Camper
VW California 20000
这样,在每个category
之后换行,并且model
和price
之间是一个制表符,您可以运行以下代码:
# Read the file
data = pd.read_csv('cars.txt', names=['Model','Price','Category'], sep='\t')
# Transform the unstructured data
data.loc[(data['Price'].isnull() == True), 'Category'] = data['Model']
data['Category'].fillna(method='ffill', inplace=True)
data.dropna(axis=0, subset=['Price'], inplace = True)
# Clean the dataframe
data.reset_index(drop=True, inplace=True)
data = data[['Category', 'Model', 'Price']]
print(data)
这确实产生了下表:
Category Model Price
0 Car Audi A4 10000.0
1 Car Audi A6 12000.0
2 Bus VW Transporter 15000.0
3 Camper VW California 20000.0
您的文本文件需要固定的结构(例如,所有值都用表格或换行符分隔)。
然后,您可以使用pd.read_csv
方法并通过pd.read_csv('yourFileName', sep='yourseperator')
手动定义分隔符。
例如,制表符为\t
,换行符为\n
。
例如,以下cars.txt
(link)是使用标签构成的,可以通过以下方式读取:
import pandas as pd
pd.read_csv('cars.txt', sep = '\t')
答案 1 :(得分:0)
从CSV文件创建表可能要比从文本文件创建表容易得多,因为它将使解析工作变得更加容易,并且还具有在电子表格应用程序(例如, Excel。
您创建文件,使其看起来像这样
category,model,price
Car,Audi A4,10000
Car,Audi A6,12000
...
然后使用csv
包轻松地以表格格式读取/写入数据