python-3.x 使用创建 Dataframe ,函数中的特定名称取决于输入

omvjsjqw  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(125)

我需要创建一个 Dataframe ,函数中的特定名称取决于输入。
下面是我的代码:
`

def filter_season (df_teams ,season):
    
    df_teams[season]= df_teams[df_teams['SEASON']== season ]
    return df_teams[season]

`
获取的错误:值错误:通过的项目数错误34,放置暗示1
我希望得到一个结果,其中 Dataframe 是根据函数中所述的条件使用名称创建的。例如:filter_season(df_teams,22)#(指2022赛季)
输出:df_teams_22

jhdbpxl9

jhdbpxl91#

IIUC,将varnameglobals配合使用:

def filter_name(df, season):
    sub_df = df.loc[df['SEASON'].eq(season)].copy()
    globals()[nameof(df) + "_" + season] = sub_df

这里有一个例子来给予你一个一般的逻辑。

import pandas as pd
from varname import nameof

df = pd.DataFrame({'character': ['cobra', 'viper', 'sidewinder'],
                   'max_speed': [1, 4, 7],
                   'shield': [2, 5, 8]})
​
print(df)
    character  max_speed  shield
0       cobra          1       2
1       viper          4       5
2  sidewinder          7       8

现在,让我们应用函数返回一个具有自定义名称的新 Dataframe (基于过滤器)。

def filter_name(df, charname):
    sub_df = df.loc[df['character'].eq(charname)].copy()
    globals()[nameof(df) + "_" + charname] = sub_df

filter_name(df, "viper")
#输出:
print(df_viper, type(df_viper))

  character  max_speed  shield
1     viper          4       5 <class 'pandas.core.frame.DataFrame'>

相关问题