Python 熊猫标识第1列中第2、3列中出现重复的所有行
我试图从Python中的Pandas数据帧中删除重复条目。数据帧由多个*.csv文件的垂直相关内容组成。以下是数据帧: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
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]的列表。我在下面的帖子中进一步添加了一条注释,解释了所需的列表。我也在原来的帖子中添加了这个。如果需要任何其他信息,请随时通知我。我想在打印行号(如上所述)方面得到一些帮助。