Python 使用pandas从txt获取CSV文件

Python 使用pandas从txt获取CSV文件,python,pandas,csv,Python,Pandas,Csv,我有一个包含信息的txt文件,每个交易都用符号\n分隔 DEAL: 896 CITY: New York MARKET: Manhattan PRICE: $9,750,000 ASSET TYPE: Rental Building SF: 8,004 PPSF: $1,218 DATE: 11/01/2017 有没有办法制作一个带有标题的csv(或其他)表格,如带有熊猫或csv模块的城市、市场等?特定标题中的所有信息都应放入相应的标题中使用熊猫输入,然后转换/透视表格 import pand

我有一个包含信息的txt文件,每个交易都用符号\n分隔

DEAL: 896
CITY: New York
MARKET: Manhattan
PRICE: $9,750,000
ASSET TYPE: Rental Building
SF: 8,004
PPSF: $1,218
DATE: 11/01/2017

有没有办法制作一个带有标题的csv(或其他)表格,如带有熊猫或csv模块的城市、市场等?特定标题中的所有信息都应放入相应的标题中

使用熊猫输入,然后转换/透视表格

import pandas as pd

df = pd.read_csv('data.txt',sep=':',header=None)

df = df.set_index(0).T
范例

import pandas as pd

data = '''
DEAL: 896
CITY: New York
MARKET: Manhattan
PRICE: $9,750,000
ASSET TYPE: Rental Building
SF: 8,004
PPSF: $1,218
DATE: 11/01/2017
'''

df = pd.read_csv(pd.compat.StringIO(data),sep=':',header=None)

print(df.set_index(0).T)

结果:

使用Pandas输入,然后变换/透视表

import pandas as pd

df = pd.read_csv('data.txt',sep=':',header=None)

df = df.set_index(0).T
范例

import pandas as pd

data = '''
DEAL: 896
CITY: New York
MARKET: Manhattan
PRICE: $9,750,000
ASSET TYPE: Rental Building
SF: 8,004
PPSF: $1,218
DATE: 11/01/2017
'''

df = pd.read_csv(pd.compat.StringIO(data),sep=':',header=None)

print(df.set_index(0).T)

结果:

更新为使用
作为分隔符进行导航:

import pandas as pd
new_temp = open('temp.txt', 'w') # writing data to a new file changing the first delimiter only
with open('fun.txt') as f:
    for line in f:
        line = line.replace(':', '|', 1) # only replace first instance of : to use this as delimiter for pandas
        new_temp.write(line)
new_temp.close()

df = pd.read_csv('temp.txt', delimiter='|', header=None)
df = df.set_index([0]).T
df.to_csv('./new_transposed_df.csv', index=False)

将创建一个csv,左栏作为标题,右栏作为数据,而不更改第二栏中的冒号。它将写出一个名为temp.txt的临时文件,您可以在运行程序后删除该文件。

更新为使用
作为分隔符进行导航:

import pandas as pd
new_temp = open('temp.txt', 'w') # writing data to a new file changing the first delimiter only
with open('fun.txt') as f:
    for line in f:
        line = line.replace(':', '|', 1) # only replace first instance of : to use this as delimiter for pandas
        new_temp.write(line)
new_temp.close()

df = pd.read_csv('temp.txt', delimiter='|', header=None)
df = df.set_index([0]).T
df.to_csv('./new_transposed_df.csv', index=False)

将创建一个csv,左栏作为标题,右栏作为数据,而不更改第二栏中的冒号。它将写出一个名为temp.txt的临时文件,您可以在运行程序后删除该文件。

检查pandas.pivotcheck pandas.pivot
pandas.errors.parserror:错误标记化数据。C错误:第10行应为2个字段,saw 3
仅当您的数据与您发布的数据一致时,此操作才有效。我将您的示例复制到一个文本文件中,并运行了这个程序,因此,如果与您发布的内容存在一些偏差,那么它可能无法工作。我也不知道你的代码中第10行是什么,因为我发布的是3行。哦,我现在明白了。是的,大约有700笔这样的交易,有些有不同的标题。文件中的一笔(或一些)交易在第1列或第2列有
(例如,如果你有一个上面写着
时间:上午9:00
,3这将创建3列而不是2列,并且只需在第2列中填充
9
,在第3列中填充
00 am
,这些:P。清理数据是成功的一半!你说得对,感谢你所做的一切:)感谢您的帮助!
pandas.errors.parserror:Error标记化数据。C Error:10行中应有2个字段,saw 3
只有当您的数据与您发布的数据一致时,这才有效。我将您的示例复制到一个文本文件中并运行了该文件,因此,如果与您发布的内容存在一些偏差,它可能无法工作。我也不知道代码中的第10行是什么因为我发布的是3行。哦,我现在明白了。是的,有700个这样的交易,有些是不同的标题。文件中的一个(或一些)交易在第1列或第2列中有一个
(例如,如果你有一个上面写着
时间:上午9:00
,3这将创建3列而不是2列,并且只需在第2列中填充
9
,在第3列中填充
00 am
,这些:P。清理数据是成功的一半!你说得对,感谢你所做的一切:)感谢您的帮助!您编辑的代码与我的代码完全相同,哈哈。;)我不知道还有其他答案。我在手机上;)写完答案后,我去在线Jupyter笔记本tryjupyter上测试,并结束了代码更新。伟大的头脑认为你编辑的代码和我的完全一样,哈哈我不知道还有另一个答案。我在手机上;)写完答案后,我去在线Jupyter笔记本tryjupyter上测试,并结束了代码更新。伟人也有同感