我试图创建一个给定过滤器和数据集的函数(get_filtered_df),遍历特定列并应用某个函数(get_filter),该函数查找满足那些条件的行并将其添加到某些最终数据帧中
这是我到目前为止所完成的:
def get_filter(filter):
string_container = []
string_container.append(filter.upper())
string_container.append(filter.lower())
# More conditions here
return (string_container)
def get_filtered_df(string_container, df):
filtered_df = pd.DataFrame(df[df['Titles'].str.contains(string_container[0])], columns=df.columns)
return(filtered_df)
当我尝试使用for或while循环而不是固定索引(0)进行迭代时,问题就来了,因为我从未获得附加满足条件的行的函数。
这是我尝试使用的特定说明:
for i in range len(get_filter('star')):
filtered_df.append(df[df['Title'].str.contains(get_filter('star')[i])])
filtered_df返回始终为空
答案 0 :(得分:0)
pd.DataFrame.append方法返回一个新对象。在您的代码中,您要追加一个新的Dataframe-每次迭代都会丢失,因此返回一个空的DataFrame。
您需要在循环中更新filtered_df
才能更新filtered_df
:
def get_filtered_df(string_container, df):
filtered_df = pd.DataFrame(data=None, columns=df.columns)
for i in range(len(string_container)):
filtered_df = filtered_df.append(df[df['Titles'].str.contains(string_container[i])], ignore_index=True)
return(filtered_df)
应该工作。