使用 def 函数应用 For 循环来生成其他 DataFrame?
Applying For loop with def function to generate other DataFrame?
我有一个名为 medal 的 DataFrame。在 medal 中,有一个名为 'event_gender' 的列,它有 4 个唯一值(men、women、open 和 mixed)。
我试图编写一个函数来通过这些唯一值获取 groupby。
如果可能的话,我想为这些命名过程编写for循环。
这是我到目前为止可以做的并且正在运行。
def gender(df, sex):
temp_df = df.loc[df['event_gender']==sex]
last_df = temp_df.groupby(['country_3_letter_code', 'medal_type'])['event_gender'].count()
return last_df
Men = gender(medal, 'Men')
Women = gender(medal, 'Women')
Mixed = gender(medal, 'Mixed')
Open = gender(medal, 'Open')
但是在这里的最后一个代码中,我分别为每个 DataFrame 命名,有没有更简单的方法为 Dataframes 命名这些?例如:
for item in medal['event_gender'].unique():
item = gender(medal, item)
是的,你可以这样做:
for item in medal['event_gender'].unique():
globals()[item] = gender(medal, item)
但是为什么要这样做呢?按原样维护您的数据框并使用分组对其进行处理。这种方法更容易对同一数据帧的不同组进行相同的计算,而不是对不同的数据帧进行相同的计算
如果您想处理 event_gender 列中的每个唯一项目。然后你可以像这样对你的分组项目使用聚合函数:
gender_grouping = medal.groupby(['event_gender']).agg({'country_3_letter_code': 'value_counts',
'medal_type': 'value_counts'})
在此之后,您可以通过以下方式检索您感兴趣的 event_gender 项:
gender_grouping.loc['Men']
我有一个名为 medal 的 DataFrame。在 medal 中,有一个名为 'event_gender' 的列,它有 4 个唯一值(men、women、open 和 mixed)。 我试图编写一个函数来通过这些唯一值获取 groupby。
如果可能的话,我想为这些命名过程编写for循环。
这是我到目前为止可以做的并且正在运行。
def gender(df, sex):
temp_df = df.loc[df['event_gender']==sex]
last_df = temp_df.groupby(['country_3_letter_code', 'medal_type'])['event_gender'].count()
return last_df
Men = gender(medal, 'Men')
Women = gender(medal, 'Women')
Mixed = gender(medal, 'Mixed')
Open = gender(medal, 'Open')
但是在这里的最后一个代码中,我分别为每个 DataFrame 命名,有没有更简单的方法为 Dataframes 命名这些?例如:
for item in medal['event_gender'].unique():
item = gender(medal, item)
是的,你可以这样做:
for item in medal['event_gender'].unique():
globals()[item] = gender(medal, item)
但是为什么要这样做呢?按原样维护您的数据框并使用分组对其进行处理。这种方法更容易对同一数据帧的不同组进行相同的计算,而不是对不同的数据帧进行相同的计算
如果您想处理 event_gender 列中的每个唯一项目。然后你可以像这样对你的分组项目使用聚合函数:
gender_grouping = medal.groupby(['event_gender']).agg({'country_3_letter_code': 'value_counts',
'medal_type': 'value_counts'})
在此之后,您可以通过以下方式检索您感兴趣的 event_gender 项:
gender_grouping.loc['Men']