你有什麼問題。主要是,你沒有正確地執行你的功能,而你試圖調用字符串「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