Skip to main content
 首页 » 编程设计

python之将多级数据框拆分为不同的 csv 文件

2025年05月04日14arxive

假设我有以下数据框:

    X       Y 
   ---+---+---+--- 
    A | B | A | B 
--+---+---+---+--- 
0 | 1 | 2 | 3 | 4 
1 | 5 | 6 | 7 | 8 
2 | 9 | 10| 11| 12 

我想根据多级索引递归拆分并保存在csv文件中。

例如,文件名 X_A.csv 应包含以下数据框:

    X  
   --- 
    A  
--+--- 
0 | 1  
1 | 5  
2 | 9  

同样,文件 X_B.csv 应将数据帧存储为:

    X  
   --- 
    B  
--+--- 
0 | 2  
1 | 6  
2 | 10 

Y_A 和 Y_B 依此类推。

我正在寻找一种 Pythonic(或高效)方法来执行此操作,而不是因为代码非常大而单独迭代列值。我尝试使用这些技术 mentioned here通过删除列级别并存储各个列,但我希望以一种不必明确提及列名称的方式进行存储,因为数据框可能会扩展(即在最顶层可能有 4 列,比如 W 、X、Y 和 Z)。

请您参考如下方法:

list_of_df = [df[i].to_frame() for i in df.columns] 

根据@JohnGalt 对 csv 的建议:

_ = [df[i].to_frame().to_csv('{0}_{1}'.format(*i)) for i in df.columns] 

输出:

list_of_df[0]

   X 
   A 
0  1 
1  5 
2  9 

list_of_df[1]

    X 
    B 
0   2 
1   6 
2  10 

...

list_of_df[3]

    Y 
    B 
0   4 
1   8 
2  12