【发布时间】:2019-10-09 04:25:30
【问题描述】:
我有一个函数,它接受 dataframe 并返回(减少的)dataframe,例如像这样:
def transforming_data(dataframe, col_1, col_2, normalized = True):
''' takes in dataframe, groups col_1 according to col_2 and returns dataframe
'''
df = dataframe[col_1].groupby(dataframe[col_2]).value_counts(normalize = normalized).unstack(fill_value = 0)
return dataframe
对于以下代码,这给了我:
import pandas as pd
import numpy as np
np.random.seed(12)
def transforming_data(df, col_1, col_2, normalized = True):
''' takes in df, groups col_1 according to col_2 and returns df '''
df = dataframe[col_1].groupby(dataframe[col_2]).value_counts(normalize = normalized).unstack(fill_value = 0)
return df
numrows = 1000
dataframe = pd.DataFrame({'Numerical': np.random.randn(numrows),
'Category': np.random.choice(['Panda', 'Elephant', 'Anaconda'], numrows),
'Response 1': np.random.choice(['Yes', 'Maybe', 'No', 'Don\'t know'], numrows),
'Response 2': np.random.choice(['Very Much', 'Much', 'A bit', 'Not at all'], numrows)})
test = transforming_data(dataframe, 'Response 1', 'Category')
print(test)
# Output
# Response 1 Don't know Maybe No Yes
# Category
# Anaconda 0.275229 0.232416 0.217125 0.275229
# Elephant 0.220588 0.270588 0.255882 0.252941
# Panda 0.258258 0.222222 0.273273 0.246246
到目前为止,一切顺利。
现在我想在for 循环中为dataframe 中的每一列使用函数transforming_data(因为我有很多列,而不仅仅是两列)并将生成的数据框保存到一个新的数据框,例如test_response_1 和 test_response_2 用于此示例。
谁能指出我正确的方向——即如何正确实现循环?
到目前为止,我正在使用类似的东西 - 但无法弄清楚如何保存数据框
for column in dataframe.columns.tolist():
temp_df = transforming_data(dataframe, column, 'Category')
# here, I need to save tmp_df outside of the loop but don't know how to
非常感谢您的指点和帮助。 (注意:most similar question I found 并没有谈到实际保存数据框,所以它对我没有帮助。
【问题讨论】:
标签: python pandas loops for-loop