如何将最后显示的数据框保存到镶木地板中?
它是这样构造的:
df_test = pd.DataFrame(np.random.rand(6,4))
df_test.columns = pd.MultiIndex.from_arrays([('A', 'A', 'B', 'B'),
('c1', 'c2', 'c3', 'c4')], names=['lev_0', 'lev_1'])
df_test.to_parquet("c:/users/some_folder/test.parquet")
该代码的最后一行返回:
ValueError:镶木地板必须具有字符串列名称
我是否假设我无法保存具有由(字符串的)多索引创建的列标题的数据框?谢谢。
-数据框如下所示:
lev_0 A B
lev_1 c1 c2 c3 c4
0 0.713922 0.551404 0.289861 0.178739
1 0.693925 0.425073 0.660924 0.695474
2 0.280258 0.827231 0.282844 0.523069
3 0.424731 0.380963 0.462356 0.491140
4 0.786677 0.102935 0.382453 0.199056
5 0.783115 0.295409 0.236880 0.388399
答案 0 :(得分:0)
pyarrow可以将pandas多索引写入到镶木地板文件中。
import pandas as pd
import numpy as np
import pyarrow.parquet as pq
df_test = pd.DataFrame(np.random.rand(6,4))
df_test.columns = pd.MultiIndex.from_arrays([('A', 'A', 'B', 'B'),
('c1', 'c2', 'c3', 'c4')], names=['lev_0', 'lev_1'])
table = pa.Table.from_pandas(df_test)
pq.write_table(table, 'test.parquet')
df_test_read = pd.read_parquet('test.parquet')
答案 1 :(得分:0)
对于熊猫1.2,此问题已修复,请参见GH34777
pd.__version__
# '1.1.0.dev0+3475.gd9845cf5d'
# Writing.
df_test
lev_0 A B
lev_1 c1 c2 c3 c4
0 0.208907 0.875918 0.610843 0.155938
1 0.325854 0.271798 0.916347 0.368343
2 0.650087 0.238840 0.415166 0.218156
3 0.684763 0.075124 0.761239 0.567883
4 0.633933 0.362682 0.214050 0.955370
5 0.561144 0.017972 0.197339 0.251407
# Writes successfully
df_test.to_parquet('test.parquet')
# Reading.
pd.read_parquet('test.parquet')
lev_0 A B
lev_1 c1 c2 c3 c4
0 0.208907 0.875918 0.610843 0.155938
1 0.325854 0.271798 0.916347 0.368343
2 0.650087 0.238840 0.415166 0.218156
3 0.684763 0.075124 0.761239 0.567883
4 0.633933 0.362682 0.214050 0.955370
5 0.561144 0.017972 0.197339 0.251407
注意:pandas 1.2还没有发布,但是如果您想测试的话,可以从头开始构建pandas。此外,要运行代码,您需要用于实木复合地板的后端引擎(即pyarrow)。