我在Jupyter笔记本上有一个DataFrame,我想生成一个代码,一旦我写入,就可以生成我观察到的同一个DataFrame。我的问题的原因是我有一个非常大的数据框,并分解了它,然后应用了许多差异技术,包括数据透视表。因此,我想要我的新生成的df。生成生成我观察到的数据帧的代码(多级索引)
我期待一个函数,我写的generate_dataframe out(df)会给我生成这个特定的DataFrame,可能包含多级索引的代码。
我在Jupyter笔记本上有一个DataFrame,我想生成一个代码,一旦我写入,就可以生成我观察到的同一个DataFrame。我的问题的原因是我有一个非常大的数据框,并分解了它,然后应用了许多差异技术,包括数据透视表。因此,我想要我的新生成的df。生成生成我观察到的数据帧的代码(多级索引)
我期待一个函数,我写的generate_dataframe out(df)会给我生成这个特定的DataFrame,可能包含多级索引的代码。
假设你有pickle
加载已经
import pickle
这个功能应该产生你所需要的代码。
def gen_code(df):
return 'pickle.loads({})'.format(pickle.dumps(df))
df = pd.DataFrame(
dict(
A=[1, 2, 3],
B=list('XYZ')
),
pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1)])
)
print(df)
A B
a 1 1 X
2 2 Y
b 1 3 Z
code_string = gen_code(df)
print(eval(code_string))
A B
a 1 1 X
2 2 Y
b 1 3 Z
这是一个黑客位,但会给你一个可以复制和粘贴可读的代码(如果该事项)。
(借款@ piRSquared的样本数据在这里)
def df_to_code(df):
print('index = pd.MultiIndex.from_tuples(', df.index.tolist(), ')')
print('dct = ', df.to_dict())
print('new_df = pd.DataFrame(dct, index=index)')
df_to_code(df)
输出:
index = pd.MultiIndex.from_tuples( [('a', 1), ('a', 2), ('b', 1)])
dct = {'A': {('a', 1): 1, ('b', 1): 3, ('a', 2): 2}, 'B': {('a', 1): 'X', ('b', 1): 'Z', ('a', 2): 'Y'}}
new_df = pd.DataFrame(dct, index=index)
那些三线是可执行文件,会给你回原来的数据框:
new_df
A B
a 1 1 X
2 2 Y
b 1 3 Z
我会说q认为有用 – piRSquared
那么,你永远不会知道...... thx – JohnE
相似http://stackoverflow.com/questions/41769882/pandas-dataframe-to-code/ – JohnE