我正在尝试在pandas中使用drop_duplicates()
函数,但似乎pandas正在破坏唯一数据:
example.py
import pandas as pd
data = pd.read_csv("test.csv")
data = data.drop_duplicates(keep="first")
data.to_csv("out.csv", index=False)
test.csv
x,y
3,5
3,5
4,9
6,5
7,0
8,1
0,2
out.csv
x,y
3,5
4,9
6,5
8,1
0,2
现在,我希望pandas会丢弃第二行3,5
,因为它实际上是重复的。但是为什么它也会掉落7,0
?这对我来说毫无意义。当我扩展它时,这种现象导致我丢失数千行独特数据。我只是不明白什么?从documentation它开始说"默认情况下使用所有列",在我看来这意味着"如果一行的所有列都匹配所有列,则只删除一行另一行",但显然情况并非如此。
我正在使用Python 3.4
并且不确定Python 2.X
上是否发生了相同的事情。
编辑:
不使用CSV也可重现:
import pandas as pd
raw_data = {'x': [7,6,3,3,4,8,0],'y': [0,6,5,5,9,1,2]}
df = pd.DataFrame(raw_data, columns = ['x', 'y'])
print("Before:", df)
df = df.drop_duplicates()
print("After:", df)
github的人现在都知道了,所以在解决之前我想解决方案是使用评论中的解决方法或暂时切换到Python 2.7。
答案 0 :(得分:-1)
这绝对是一个错误,暂时是你可以做的临时修复
import pandas as pd
data = pd.read_csv("data.csv")
data = data.drop_duplicates(subset=['x'], keep="first")
将subset
分类似乎可以解决问题。
x y
0 3 5
2 4 9
3 6 5
4 7 0
5 8 1
6 0 2