生成生成我观察到的数据框的代码(多级索引)
Generate the code that produces my observed dataframe (Multilevel index)
我的 Jupyter notebook 上有一个 DataFrame,我想生成一个代码,一旦我编写就可以生成我观察到的相同 DataFrame。我的问题的原因是我有一个非常大的 dataFrame 并将其分解然后应用了很多不同的技术,包括数据透视表。因此,我想拥有我新生成的 df。
我期待我从 (df) 中编写的类似 generate_dataframe 的函数将给我生成此特定 DataFrame 的代码,该 DataFrame 可能包含多级索引。
设置
假设您已经 pickle
加载了
import pickle
解决方案
此函数应该会生成您需要的代码。
def gen_code(df):
return 'pickle.loads({})'.format(pickle.dumps(df))
示范[=18=]
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
这有点 hack,但会为您提供可以复制和粘贴的可读代码(如果重要的话)。
(这里借用了@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
我的 Jupyter notebook 上有一个 DataFrame,我想生成一个代码,一旦我编写就可以生成我观察到的相同 DataFrame。我的问题的原因是我有一个非常大的 dataFrame 并将其分解然后应用了很多不同的技术,包括数据透视表。因此,我想拥有我新生成的 df。
我期待我从 (df) 中编写的类似 generate_dataframe 的函数将给我生成此特定 DataFrame 的代码,该 DataFrame 可能包含多级索引。
设置
假设您已经 pickle
加载了
import pickle
解决方案
此函数应该会生成您需要的代码。
def gen_code(df):
return 'pickle.loads({})'.format(pickle.dumps(df))
示范[=18=]
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
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
这有点 hack,但会为您提供可以复制和粘贴的可读代码(如果重要的话)。
(这里借用了@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