我正在尝试从.txt文件创建e dataframe (包含三列的表)。
我准备了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)我希望有一个三栏的表-类别,这将显示车辆是否是汽车/公共汽车/露营,模型和价格。
提前谢谢你!
发布于 2019-06-27 15:39:13
更新:
考虑到你的评论,我发现我误解了你的问题。
如果您是文本文件(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 (链接)是使用制表符构造的,可以用以下方式读取:
import pandas as pd
pd.read_csv('cars.txt', sep = '\t')发布于 2019-06-27 15:42:10
从CSV文件创建表可能比从文本文件创建表容易得多,因为它将使解析工作更加容易,并且还提供了在电子表格应用程序(如Excel )中轻松查看表格式的好处。
创建该文件,使其看起来如下所示
category,model,price
Car,Audi A4,10000
Car,Audi A6,12000
...然后使用csv包轻松地将数据读写成表格格式。
https://stackoverflow.com/questions/56794440
复制相似问题