Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想将数据帧字典写入具有多个级别标题的单个csv文件_Python_Python 3.x_Pandas_Csv_Dictionary - Fatal编程技术网

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中有空单元格