Python 如何使用无重复after条件从pandas数据帧中提取特定行?

Python 如何使用无重复after条件从pandas数据帧中提取特定行?,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,请在这方面帮助我,我需要合适的python代码来满足图像中的这些条件: 条件=如果“消息”具有>1个“类别”,则将这些整行保存在新数据框中 但如果消息仅重复具有一个类别,则不应保存行 df[df.duplicated(['Message'], keep=False)] 我尝试过这个重复的概念,但它会打印所有的值,包括消息是否只有一个类别 对于图像中相同的输出文件格式,我需要正确的python代码我重新创建了数据集,如下所示: 数据={ “信息”:[ “我喜欢这个产品”, “我要买”, “质量

请在这方面帮助我,我需要合适的python代码来满足图像中的这些条件: 条件=如果“消息”具有>1个“类别”,则将这些整行保存在新数据框中

但如果消息仅重复具有一个类别,则不应保存行

df[df.duplicated(['Message'], keep=False)]

我尝试过这个重复的概念,但它会打印所有的值,包括消息是否只有一个类别


对于图像中相同的输出文件格式,我需要正确的python代码

我重新创建了数据集,如下所示:

数据={
“信息”:[
“我喜欢这个产品”,
“我要买”,
“质量好”,
“好产品”,
“它的重量很高”,
“我喜欢这个产品”,
“它的工作”,
“爱它”,
“设计好”,
“它的工作”,
“设计好”,
“设计好”,
“设计好”,
“设计很好”
],
“类别”:[
“满意”,
“意图”,
“产品质量”,
“产品质量”,
“重量”,
“产品质量”,
“表演”,
“满意”,
“设计”,
“产品质量”,
“设计”,
“设计”,
“设计”,
“设计”
],
}
然后,我们可以在您的
df[“Message”]
列中找到所有唯一值,并在
df[“Category”]
列中确定其中哪些具有多个与之相关联的唯一值:

将熊猫作为pd导入
df=pd.DataFrame(数据)
messages=df.Message.unique()
多类别=[]
对于消息中的消息:
subset=len(df[df[“Message”]==Message][“Category”].unique())
如果子集>1:
多类别追加(消息)
final=df[df[“Message”].isin(多类别)]
打印(最终版)
最后,我们通过“Message”列过滤我们的
DataFrame
,并获得以下输出:

               Message         Category
0  I like this product     Satisfaction
5  I like this product  Product Quality
6          Its working      Performance
9          Its working  Product Quality

您可以分两行执行此操作:首先删除
消息
类别
相同的重复项,然后查找具有唯一
类别
消息
的所有重复项:

df = df.drop_duplicates(subset=['Message', 'Category'])
df[df.duplicated(subset='Message', keep=False)]
valid = df.groupby('Message').Category.transform('nunique') > 1
df[df.duplicated(subset='Message', keep=False) & valid]
编辑: 如果naive
drop_duplicates
方法删除有效数据(对于您的示例来说,它同样有效,但对于较大的数据可能会遇到问题),您可以显式应用unique
Category
的条件:

df = df.drop_duplicates(subset=['Message', 'Category'])
df[df.duplicated(subset='Message', keep=False)]
valid = df.groupby('Message').Category.transform('nunique') > 1
df[df.duplicated(subset='Message', keep=False) & valid]

最后还有两行,这很好,但通读起来有点复杂。我们正在通过
消息
对数据帧进行分组,以确定其中哪些具有多个
类别
唯一值。我们特别使用groupby
transform
方法使其成为一个与原始数据的轴零一起工作的形状,将其用作布尔掩码,条件为
>1

请重新格式化您的问题。没有图像。为我们提供代码来复制您的数据帧,以便我们可以帮助回答您的问题。不确定您在这里寻找什么。如果说您只想将数据帧过滤到与“Message”对应的行,而这些行又与“Category”列中的多个值关联,这是否准确?