你有什么问题。主要是,你没有正确地执行你的功能,而你试图调用字符串“val”,而不是你的平等变量val
。试试这个:
data = {'cat' : ['A', 'B', 'C', 'D'], 'dog' : ['e', 'f', 'g', 'h']}
df = pd.DataFrame(data)
print(df)
def splitter(df, val):
return df[df['cat'] == val]
val = 'A'
df_subset = splitter(df, val)
这使你有两个dataframes:
>df
cat dog
0 A e
1 B f
2 C g
3 D h
>df_subset
cat dog
0 A e
这里其实是没有必要的功能要做到这一点,但我把它放在那里,所以你可以看到的功能是如何工作的。特别要注意的是,当你想让它返回时,你不会传入outval
。
其他一些旁注:
Dataframes可以从与值列表字典中创建的,所以没有必要调用Series
。
不要将您的数据框对象命名为您要引用的数据框列(在本例中为“cat”),因为它只是令人困惑。如果你只处理一个数据帧,约定是使用df
。
除了做一个分离器功能,对于这么简单的事情你可以这样做:df_subset = df[df['cat'] == val]
,除非这只是一个玩具的例子,当然还有更多需要在函数内部发生。
谢谢,但我想动态创建数据框,以便我不必键入'cata'或'catb',但值'A'和'B'自动通过CAT'A'或CAT'B '.. – tezzaaa