Python,如何用动态表写入csv文件



我有一个大的csv文件(1Gb),我需要以这种格式读取,处理并写入新的csv文件。

TimeStamp, header1, header2, header3, ....
0:00:53:922:131, data1, , , ....
0:00:54:922:131, , data2, , ....
0:00:55:922:131, , , data3, ....

输入csv文件有以下格式(有些没有头)

Timestamp, info1, info2, info3, ......
0:00:53:922:131, info_bit1,info_bit2 ,info_bit3 , ....
0:00:54:922:131, info_bit1,info_bit2 ,info_bit3 , ....
0:00:55:922:131, info_bit1,info_bit2 ,info_bit3 , ....

头及其数据在处理从读取的csv文件中的每行时作为字典检索。

下面是我的代码片段:
import pandas as pd
for chunk in chunks:
for col in chunk.values:
ts = col[0]
msgID = int(str(col[5]), 16)
dlc = col[6]
eol = 8+dlc
concatData = ""
for data in col[8:eol]:
data = str(data).zfill(2)
concatData += data
hexData = bytes.fromhex(concatData)
dataMap = {ts:test.decode(int(msgID), hexData)}
pd.DataFrame.from_dict(dataMap, orient='index').to_csv(outputfile, mode='a')
print('{} {}'.format(ts, test.decode(int(msgID), hexData)))
time.sleep(0.01)

test.decode返回{'key_name1': value,'key_name2': value,'key_name3': value}并且每个调用可能有不同的大小,有些有4,有些有8,等等。同样的键将在不同的时间戳再次追加。我将时间戳附加到这个字典并创建一个新字典。

我得到的输出是,
,key1_name1,key1_name2,key1_name3,,,,,,,,,,,,,,,
0:00:53:915:439,value1,value2,value3,,,,,,,,,,,,,,,
,key2_name1,key2_name2,key2_name3,key2_name4,,,,,,,,,,,,,,,
0:00:53:915:613,value1,value2,value3,value4,,,,,,,,,,,,,,,,

下面是我想要的输出文件:

Timestamp, key1_name1, key1_name2,key2_name1,key2_name2,key2_name3,key2_name4,,,,,,
0:00:53:915:439,key1_value1,key1_value2,key1_value3,,,,,,
0:00:53:915:613,,,,,,key2_value1,key2_value2,key2_value3,key2_value4,,,,,,,,,,,,
0:00:54:915:613,key1_value4,key1_value5,key1_value6,,,,,,,,
0:00:55:915:613,,,,,key2_value5,key2_value6,key2_value7,key2_value8,key2_value9,,,,,

它将有100个键名,我想只保留在标题中,尽管值将出现在不同的时间戳。

我如何将标题附加到现有的列和数据,从某些行/列开始?

我认为你可以用传统的方式处理open

my_data = [] # list of dict
with open('output.csv','a') as f:
for d in my_data:
f.write("".join([str(i)+"," for i in d.values()])[:-1]+"n")

相关内容

  • 没有找到相关文章

最新更新