编辑:给定示例的所需输出:
first second third fourth fifth
1 2 3 4 5
编辑2:将count()更改为size()
在分析数据时,我遇到了多个实例,这些实例要返回所有重复的行,但每个重复仅返回一行。我正在尝试使用Python 3在Pandas中这样做。
使用groupby进行计数,我可以获得所需的输出,但这并不直观。大熊猫的“重复”功能不会返回所需的输出,因为如果重复项多于两个,它将返回多行。
data = [[1,2,3,4,5],
[1,2,3,4,5],
[1,2,3,4,5],
[4,5,6,7,8]]
x.columns = ['first','second','third','fourth','fifth']
x = pd.DataFrame(data)
x.groupby(list(x.columns)).size() > 1
groupby函数在使用
时返回所需的数据帧输出x[x.duplicated(keep='first')]
仍将返回重复的行。还有一种仅返回唯一重复项的更Python方式吗?
答案 0 :(得分:0)
使用
x.drop_duplicates()
first second third fourth fifth
0 1 2 3 4 5
3 4 5 6 7 8
答案 1 :(得分:0)
您可以先用duplicated
然后用drop_duplicates
链接已选择的内容,例如:
print (x[x.duplicated()].drop_duplicates())
first second third fourth fifth
1 1 2 3 4 5
答案 2 :(得分:0)
您仍然可以使用.duplicated()
检查该行是否重复。如果它是重复项,则它将返回True
。
此后,我们创建一个标志,然后执行循环以仅获取重复的行。检查我的代码以获取详细信息。
import pandas as pd
data = [[1,2,3,4,5],
[1,2,3,4,5],
[1,2,3,4,5],
[4,5,6,7,8]]
x = pd.DataFrame(data)
x.columns = ['first','second','third','fourth','fifth']
lastFlag = False # create a flag for duplicated rows
dupl = x.duplicated() # check which row is a duplicate
for i in range(len(dupl)): # looping into the list
# get the first duplicate and print it
if lastFlag != dupl[i]:
lastFlag = dupl[i]
if dupl[i]:
print(x.iloc[i, :]) # this print in pandas.Series type
希望这会有所帮助。