我在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