Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫标识第1列中第2、3列中出现重复的所有行_Python_Pandas_Duplicates_Dataframe - Fatal编程技术网

Python 熊猫标识第1列中第2、3列中出现重复的所有行

Python 熊猫标识第1列中第2、3列中出现重复的所有行,python,pandas,duplicates,dataframe,Python,Pandas,Duplicates,Dataframe,我试图从Python中的Pandas数据帧中删除重复条目。数据帧由多个*.csv文件的垂直相关内容组成。以下是数据帧: print df file TestA TestB One.csv 7513 -643.1 One.csv 15347 NaN One.csv NaN 22.7 One.csv 46321 NaN One.csv NaN 156.1 One.csv

我试图从Python中的Pandas数据帧中删除重复条目。数据帧由多个*.csv文件的垂直相关内容组成。以下是数据帧:

print df

     file    TestA    TestB
  One.csv     7513   -643.1
  One.csv    15347      NaN
  One.csv      NaN     22.7
  One.csv    46321      NaN
  One.csv      NaN    156.1
  One.csv     2477     52.7
  Two.csv      417   1473.5
  Two.csv     7513   -643.1
  Two.csv    15347      NaN
  Two.csv      NaN     22.7
  Two.csv    46321      NaN
  Two.csv      NaN    156.1
Three.csv    -4341      NaN
Three.csv    34473      437
Three.csv     1349      NaN
 Four.csv       17      NaN
 Four.csv      107      NaN
 Four.csv     -931    44536
 Four.csv     6285      NaN
 Four.csv      119    34722
我想做以下工作: A.比如:

print("Rows %s of %s are duplicated in rows %s of %s. Rows from %s will now be removed from the DataFrame.") % ([1,2,3,4,5],'One.csv',[2,3,4,5,6],'Two.csv', 'One.csv')
我想要打印
语句的这个结果:

One.csv的[1,2,3,4,5]行与Two.csv的[2,3,4,5,6]行重复。现在将从数据框中删除One.csv中的行。

我不知道如何识别行并在
print
语句中设置它们

是否有办法按第1列的行号(
FileName
)识别重复的行

编辑: 要创建数据帧
df
,请从此处选择数据帧并将其复制到剪贴板。然后用这个:

import pandas as pd
df = pd.read_clipboard()
print df

不确定要打印的确切内容,但可以使用
groupby
识别重复的行:

In [169]: g = df.groupby(['TestA', 'TestB'])
In [170]: g.groups
Out[170]: 
{(-4341.0, nan): [12L],
 (-931.0, 44536.0): [17L],
 (17.0, nan): [15L],
 (107.0, nan): [16L],
 (119.0, 34722.0): [19L],
 (417.0, 1473.5): [6L],
 (1349.0, nan): [14L],
 (2477.0, 52.7): [5L],
 (6285.0, nan): [18L],
 (7513.0, -643.1): [0L, 7L],
 (15347.0, nan): [8L],
 (34473.0, 437.0): [13L],
 (46321.0, nan): [3L],
 (nan, 22.7): [9L],
 (nan, 156.1): [4L],
 (nan, 156.1): [11L],
 (15347.0, nan): [1L],
 (nan, 22.7): [2L],
 (46321.0, nan): [10L]}

然后,您可以选择要删除哪些

我将不得不发布我尝试过的内容,希望它能在这里得到一些进展:

1.这给了我副本:

duplicates = df[df.columns[1:]].duplicated()
2.这给了我一个包含重复条目的文件列表:

files = df[duplicates==True]['file'].unique().tolist()
3.这会打印一条接近我想要的信息,但不是我想要的:

print('Rows of ' + ", ".join(["%s"]*len(files)) + 'are duplicated. These rows will now be removed from the dataframe.' % tuple(files))
缺少打印语句:

  • 每个文件的行号-一个.csv缺少
    [1,2,3,4,5]
  • 用于Two.csv的行号
    [2,3,4,5,6]

  • 如果有人能找到将这些行号包含在打印语句中的方法(如我在原始帖子中所述),那么这就是回答这个问题的方法。

    Hi,我已经在原始帖子中添加了我希望打印输出的内容。我想在
    FileName
    列的2`*.csv`文件名中找到重复行号的列表。在
    One.csv
    中,我想要一个指示
    [1,2,3,4,5]
    的列表,在
    Two.csv中,我想要一个指示[2,3,4,5,6]的列表。我在下面的帖子中进一步添加了一条注释,解释了所需的列表。我也在原来的帖子中添加了这个。如果需要任何其他信息,请随时通知我。我想在打印行号(如上所述)方面得到一些帮助。