熊猫识别列1中的所有行,其中列2,3中出现重复
我想从Python中的熊猫数据框中删除重复的条目。 DataFrame由多个* .csv文件的垂直concatenated内容组成。下面是数据框:熊猫识别列1中的所有行,其中列2,3中出现重复
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
我想做到以下几点:一 。
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')
我想print
声明这样的结果:喜欢的东西
Rows [1,2,3,4,5] of One.csv are duplicated in rows [2,3,4,5,6] of Two.csv. Rows from One.csv will now be removed from the DataFrame.
我不知道如何识别行和设置他们在print
声明。
有没有方法根据第1列的行号识别重复的行(FileName
)?
编辑: 要创建DataFrame df
,请从这里选择并复制DataFrame到剪贴板。然后用这个:
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))
print语句丢失:
- 每个行号˚F ILE - 它缺少
[1,2,3,4,5]
为One.csv - 行号
[2,3,4,5,6]
为Two.csv
如果有人能找到要包含在打印语句这些行号(如我已经描述的方式原来的帖子),那么这将回答这个问题。
我在下面的帖子中进一步添加了一条评论,解释所需的列表。我还将此添加到原始帖子中。如果有任何额外的信息需要,请随时让我知道。我想获得一些帮助打印行号(如上所述)。 – 2015-04-04 20:00:29
嗨,我已经添加到原来的职位,我想'印刷'输出。我想从'FileName'列的2' * .csv'文件名中找到重复行号的列表。在'One.csv'中,我想要一个表示'[1,2,3,4,5]'的列表,并且在'Two.csv'中我想要一个表示[2,3,4,5,6 ]。 – 2015-04-03 15:58:12