如何遍历满足某些条件的熊猫数据框并将这些行附加到新数据框?

时间:2020-10-14 13:43:17

标签: python pandas dataframe loops append

我试图创建一个给定过滤器和数据集的函数(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返回始终为空

1 个答案:

答案 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)

应该工作。