簡體   English   中英

將字典值寫入csv python

[英]Write dictionary values to csv python

我有字典,

d = [{
       'id': 1
       'a' : [11,12],
       'b' : [25,17],
       'c' : [13,18] 
}]

在這里,我想用列標題作為鍵(id,a,b,c)和值作為行的csv語言編寫。 在這里我想寫第一行的鍵值為(id,a,b,c)的值為(1,11,25,13),第二行的鍵值為id為相同的鍵的值為(1,12,17,18)兩行相同。 這意味着如果我的值有兩個以上的值,則需要在下一行的csv中用相同的列標題和相同的id編寫它。

我正在嘗試這樣的事情

CSV ="\n".join([k+','+",".join(v) for k,v in dict_data[0].items()])
print CSV

但是再次,列作為行來,csv文件id,1,(無值,我這里需要1)----這里id不會出現a,11,12 b,25,17並且它們作為行來,我想要id,ab作為列

我認為Pandas DataFrame是您的最佳選擇。 我也對您的數據做了一些修改,使id列也成為列表-

d = {
       'id': [1],
       'a' : [11,12,13],
       'b' : [25,17],
       'c' : [13,18] 
}

import pandas as pd
df = pd.DataFrame.from_dict(d,orient='index').transpose()
df = df.fillna(method='ffill')
print(df)

最后,只需將其輸出到csv df.to_csv('output.csv', index=False)

輸出-

id     a     b     c
0  1.0  11.0  25.0  13.0
1  1.0  12.0  17.0  18.0
2  1.0  13.0  17.0  18.0

它首先創建一個缺少NA值的數據框,然后將這些NA值替換為上一行中的值。

id轉換為list后,嘗試from_dict創建pandas數據from_dict

import pandas as pd
d = [{ 'id': 1,
       'a' : [11,12],
       'b' : [25,17],
       'c' : [13,18] }]

# d['id'] = [d['id']] * len(d['a'])  # no need for this line; kept only because it is discussed in comments
df = pd.DataFrame.from_dict(d[0])  # if dict is in a list, use d[0]
print(df)

輸出:

    a   b   c  id
0  11  25  13   1
1  12  17  18   1

要寫入csv文件:

df.to_csv("out.csv", index=False)

您可以將DataFrame構造DataFrame.to_csvDataFrame.to_csv一起DataFrame.to_csv

import pandas as pd

df = pd.DataFrame(d[0], columns=['id','a','b','c'])
print (df)
   id   a   b   c
0   1  11  25  13
1   1  12  17  18

接着:

df.to_csv(file, index=False)

全部一起:

pd.DataFrame(d[0], columns=['id','a','b','c']).to_csv(file, index_col=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM