在Pandas中,可以使用isin()
函数和布尔索引来删除没有出现在另一个列中的行。
假设我们有一个名为df
的DataFrame,其中包含三列:col1
、col2
和col3
。我们想要删除col1
和col2
中的值没有出现在col3
中的行。
以下是实现这个目标的步骤:
isin()
函数创建一个布尔索引,判断col1
和col2
中的值是否在col3
中出现。例如,df['col1'].isin(df['col3'])
将返回一个布尔Series,表示col1
中的值是否在col3
中出现。&
将两个布尔Series组合起来,以确定哪些行同时满足col1
和col2
的值没有出现在col3
中。例如,df['col1'].isin(df['col3']) & df['col2'].isin(df['col3'])
将返回一个布尔Series,表示同时满足条件的行。df = df[df['col1'].isin(df['col3']) & df['col2'].isin(df['col3'])]
将删除不满足条件的行,并将结果重新赋值给df
。以下是完整的代码示例:
import pandas as pd
# 创建示例DataFrame
data = {'col1': [1, 2, 3, 4, 5],
'col2': [6, 7, 8, 9, 10],
'col3': [1, 2, 3, 11, 12]}
df = pd.DataFrame(data)
# 删除没有出现在col3中的行
df = df[df['col1'].isin(df['col3']) & df['col2'].isin(df['col3'])]
# 打印结果
print(df)
输出结果为:
col1 col2 col3
0 1 6 1
1 2 7 2
2 3 8 3
在这个例子中,只有前三行满足条件,因为它们的col1
和col2
的值都在col3
中出现。因此,第四行和第五行被删除了。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云