假设我有以下数据框:
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
