Python 我想将数据帧字典写入具有多个级别标题的单个csv文件
我有一系列数据如下所示:Python 我想将数据帧字典写入具有多个级别标题的单个csv文件,python,python-3.x,pandas,csv,dictionary,Python,Python 3.x,Pandas,Csv,Dictionary,我有一系列数据如下所示: example = {'sample A': pd.DataFrame({'Head1':data,'Head2':data}), 'sample B': pd.DataFrame({'Head1':data,'Head2':data})...} 我想将其保存到一个csv文件中,其中示例名称作为标题,Head1和Head2作为子标题 到目前为止,我只是使用 用于示例中的示例 示例[sample]。至_csv(sample+“data.csv”,index=False)
example = {'sample A': pd.DataFrame({'Head1':data,'Head2':data}), 'sample B': pd.DataFrame({'Head1':data,'Head2':data})...}
我想将其保存到一个csv文件中,其中示例名称作为标题,Head1和Head2作为子标题
到目前为止,我只是使用
用于示例中的示例
示例[sample]。至_csv(sample+“data.csv”,index=False)
csv文件应如下所示:
Sample A,, Sample B,,/n
Head1, Head2, Head1, Head2,/n
Data, Data, Data, Data,/n
注意:每个样本的子标题数量始终相同
到目前为止,我一直在考虑将数据帧连接成一个数据帧,将其写入csv,然后再添加新的头,但似乎应该有更好的方法。1-创建虚拟
数据帧
:
将熊猫作为pd导入
示例={'sample A':pd.DataFrame({'Head1':[1.0],'Head2':[1.0]}),'sample B':pd.DataFrame({'Head1':[1.0],'Head2':[1.0]})
2-在你的dict上迭代:
对于键,例如.items()中的值:
value.columns=pd.MultiIndex.from_product([[key],value.columns])#创建多层索引
df=pd.concat([df,value],axis=1,sort=False)#在右侧添加数据帧
3-IMG结果:
4-操纵标题的第一行以获得正确的csv:
导入csv
df.to_csv(“my_temp_csv.csv”)
以open('my_temp_csv.csv','rb')作为填充,open('my_final_csv.csv','wb')作为输出文件:
reader=csv.reader(infle)
header=reader.next()
新的_头=[]
对于标题中的元素:
如果元素不在新标题中:
新建_头。追加(元素)
其他:
新标题。附加(“”)
w=csv.writer(输出文件)
w、 writerow(新的_头)
对于读取器中的行:
w、 writerow(世界其他地区)
5-享受csv(LibreOffice屏幕截图):
为什么是单一CSV?你有没有想过要如何读回该文件?另外,我刚刚意识到,连接并在之后写入一个新的头是一个坏主意,因为示例名称可能会混淆并设置为错误的名称data@DroidX86组合的csv文件将为人工读取编辑:另外,我仍然把数据帧字典保存在内存中。所以我可以使用它做任何需要做的事情,然后重新保存csv文件。您想要的csv可能更像:
,样本A,样本B,/n,Head1,Head2,Head1,Head2/n数据,数据,数据,数据/n
否则它不是csvI将您的答案保存到csv,结果是:样本a样本B样本B Head1 Head2 Head1 Head1 Head1 Head1 Head2 0 1 1 1 1
df.to_csv(“my_csv.csv”)给我,样本a,样本a,样本B,样本B,Head1,Head2,Head1,Head2 0,1,1,1,1
实际上是一个CSVI希望不重复主标题CSV不能这样做。要么你有空单元格要么你有重复的第一层标题。对不起,我不清楚。我希望在样本A、样本B、Head1、Head2、Head1、Head2 0,1,1,1,1中有空单元格