根据值列表从数据框中按行删除
Remove by rows from a data frame with respect to a list of values
我的数据框中有一个分类变量 X,它包含 10 个级别。我已经构建了一个包含这 10 个级别中的 3 个级别的列表。我想从数据框中删除变量级别不在列表中的所有行。
我试过:
level_list= ['l1','l2','l3']
for i in range(df.shape[0]):
if (df['X'].iloc[i] in level_list) == False:
df.drop(i, axis=0)
但是,数据框中的 none 行被删除。我需要一些帮助。提前致谢!
看起来 this 就是您要找的东西。
df[df['X'].isin(level_list)]
df = df.loc[df['X'].apply(lambda x: x in level_list)]
应该可以解决问题。
有
df['X'].apply(lambda x: x in level_list)
您正在为整个 DataFrame 获取一个“过滤器掩码”,然后使用 .loc
应用过滤器掩码
我的数据框中有一个分类变量 X,它包含 10 个级别。我已经构建了一个包含这 10 个级别中的 3 个级别的列表。我想从数据框中删除变量级别不在列表中的所有行。
我试过:
level_list= ['l1','l2','l3']
for i in range(df.shape[0]):
if (df['X'].iloc[i] in level_list) == False:
df.drop(i, axis=0)
但是,数据框中的 none 行被删除。我需要一些帮助。提前致谢!
看起来 this 就是您要找的东西。
df[df['X'].isin(level_list)]
df = df.loc[df['X'].apply(lambda x: x in level_list)]
应该可以解决问题。
有
df['X'].apply(lambda x: x in level_list)
您正在为整个 DataFrame 获取一个“过滤器掩码”,然后使用 .loc
应用过滤器掩码