如何从.txt文件创建表?

时间:2019-06-27 15:32:51

标签: python pandas dataframe

我正在尝试从.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)

我希望有一个包含三列的表格-类别,它将显示车辆是否为汽车/公共汽车/露营车,型号和价格。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

更新:

记住您的评论后,我发现我误解了您的问题。
如果您是文本文件(cars.txt),则如下所示:

Car
Audi A4         10000
Audi A6         12000

Bus
VW Transporter  15000

Camper
VW California   20000

这样,在每个category之后换行,并且modelprice之间是一个制表符,您可以运行以下代码:

# 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.txtlink)是使用标签构成的,可以通过以下方式读取:

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包轻松地以表格格式读取/写入数据