【发布时间】:2021-10-13 00:48:27
【问题描述】:
我需要帮助。我想通过一个DF。部分我的用户有 2 个团队(在行中用逗号分隔)。我用逗号将它们分开,并将它们写在新列 Team_1 和 Team_2 中。 如果只有一个团队,则团队名称进入团队 1。
import numpy as np
import pandas as pd
df = pd.DataFrame({
'name': [
'abby',
'bella',
'coco',
'deedee',
'elliot'],
'email': [
'a@test.com',
'b@test.com',
'c@test.com',
'd@test.com',
'e@test.com'],
'team(s)': [
'alpha',
'omega',
'alpha,omega',
'beta',
'beta,omega'
]})
df_split_teams = df.join(df['team(s)'].str.split(',', 1, expand=True)).rename(columns={0: 'Team_1', 1:'Team_2'})
if 'None' in df.index:
df_split_teams['Team_1'] == df_split_teams['team(s)']
我可以使用一个函数来显示可用的各个团队名称:
def get_team_names(df):
team_names = set(df['team(s)'])
split_team_names = set()
for team in team_names:
for name in team.split(','):
split_team_names.add(name)
return split_team_names
但是:现在我想为所有团队设置一个单独的 DF。每队一名 DF。最好的自动化循环。首先我是这样做的:
df_alpha = df_split_teams[(df_split_teams['Team_1'].isin(['alpha'])) | (df_split_teams['Team_2'].isin(['alpha']))]
df_beta = df_split_teams[(df_split_teams['Team_1'].isin(['beta'])) | (df_split_teams['Team_2'].isin(['beta']))]
df_omega = df_split_teams[(df_split_teams['Team_1'].isin(['omega'])) | (df_split_teams['Team_2'].isin(['omega']))]
但不时会添加新团队,或者我们有不同的团队。代码通常应该是有效的。也适用于我同事的其他人。因此,我无法在我的代码中预定义团队名称。
希望您能提供帮助。 问候 贝基里
【问题讨论】:
标签: python pandas dataframe loops