pandas从具有特定条件的数据帧(分组)中删除重复项

2024-10-01 05:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,所有我有一个数据帧的内容将是

name,mv_str
abc,Exorsist part1
abc,doc str 2D
abc,doc str 3D
abc,doc str QA
abc,doc flash
def,plastic
def,plastic income
def,doc str 2D   ###i added this row for better clarity

我预期的o/p应该是。。。。从某种意义上说,每个组获得唯一的记录行——对于每个mailid mv_str不应该是相似的类型i:e来自一个“mv_str”的前2个单词不应该出现在第2行/任何一行中。在

注意:应根据用户名级别进行比较。在

^{pr2}$

请任何人帮助我形成逻辑,否则代码示例将是很大的帮助。谢谢。在


Tags: 数据name内容addeddocdefqaflash
1条回答
网友
1楼 · 发布于 2024-10-01 05:02:58

我认为您需要在mv_str列中首先使用^{}字符串,然后创建新的DataFramedf1

df1 = df.mv_str.str.split(expand=True)
print (df1)
          0       1     2
0  Exorsist   part1  None
1       doc     str    2D
2       doc     str    3D
3       doc     str    QA
4       doc   flash  None
5   plastic    None  None
6   plastic  income  None
7       doc     str    2D

^{}添加原始DataFramedf

^{pr2}$

然后^{}通过name01列,第一个值仍然存在:

print (df.drop_duplicates(['name',0,1]))
  name          mv_str         0       1     2
0  abc  Exorsist part1  Exorsist   part1  None
1  abc      doc str 2D       doc     str    2D
4  abc       doc flash       doc   flash  None
5  def         plastic   plastic    None  None
6  def  plastic income   plastic  income  None
7  def      doc str 2D       doc     str    2D

^{}删除列012

print (df.drop_duplicates(['name',0,1]).drop([0,1,2], axis=1))
  name          mv_str
0  abc  Exorsist part1
1  abc      doc str 2D
4  abc       doc flash
5  def         plastic
6  def  plastic income
7  def      doc str 2D

或者最好只选择namemv_str列来删除列:

print (df.drop_duplicates(['name',0,1])[['name','mv_str']])
  name          mv_str
0  abc  Exorsist part1
1  abc      doc str 2D
4  abc       doc flash
5  def         plastic
6  def  plastic income
7  def      doc str 2D

相关问题 更多 >