进行Python类表数据转换的最佳方法

2024-09-29 23:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个以制表符分隔的字符串数据,其中列位于第一行-可以有任意数量的列以任意顺序排列

<COLUMNS> BathsFull BathsHalf BedsTotal MatrixModifiedDT Status </COLUMNS>
<DATA> 1 1 3 2020-06-21T07:48:04.327 ACTV </DATA>
<DATA> 2 0 3 2020-06-03T09:30:38.177 ACTV </DATA>
<DATA> 1 0 2 2020-08-31T09:45:45.430 ACTV </DATA>

我始终需要产生如下输出:

<COLUMNS> BedsTotal Status </COLUMNS>
<DATA> 3 ACTV </DATA>
<DATA> 3 ACTV </DATA>
<DATA> 2 ACTV </DATA>

在python中进行此转换的最佳方法是什么?(基本上是选择列的子集) 感谢您的帮助&;想法


Tags: columns数据方法字符串data数量status子集
2条回答
import csv
import io

output = io.StringIO()

data = """<COLUMNS> BathsFull   BathsHalf   BedsTotal   MatrixModifiedDT    Status  </COLUMNS>
<DATA>  1   1   3   2020-06-21T07:48:04.327 ACTV    </DATA>
<DATA>  2   0   3   2020-06-03T09:30:38.177 ACTV    </DATA>
<DATA>  1   0   2   2020-08-31T09:45:45.430 ACTV    </DATA>"""
#print(data)
    

fieldnames = ['<COLUMNS>', 'BedsTotal', 'Status', '</COLUMNS>']
writer = csv.DictWriter(output, fieldnames=fieldnames, delimiter='  ', extrasaction='ignore')
writer.writeheader()


c = csv.DictReader(data.splitlines(), delimiter='   ')
for row in c:
    #print(row['Status'])
    writer.writerow(row)

print(output.getvalue())
output.close()

第1步: 使用熊猫图书馆

import pandas as pd

第二步: 创建一个dataframe df(它基本上是一个表,df是您的dataframe的名称,基本上您可以随意命名)

data = [[1, 1, 3, '2020-06-21T07:48:04',327], [2, 0, 3, '2020-06-03T09:30:38',177]]
df = pd.DataFrame(data, columns = ['BathsFull', 'BathsHalf', 'BedsTotal' ,'MatrixModifiedDT', 'Status']) 

第三步: 执行一些函数,如:df.columnsdf['BedsTotal', 'Status']来命名列或选择列,您将获得所需的输出

相关问题 更多 >

    热门问题