python - 为什么 pandas 会丢弃唯一的行?

标签 python pandas python-3.4

我正在尝试在 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)

测试.csv

x,y
3,5
3,5
4,9
6,5
7,0
8,1
0,2

输出.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。

最佳答案

这绝对是一个错误,暂时你可以做一个临时修复

import pandas as pd

data = pd.read_csv("data.csv")

data = data.drop_duplicates(subset=['x'], keep="first")

Sepcifying subset 似乎可以解决问题。

   x  y
0  3  5
2  4  9
3  6  5
4  7  0
5  8  1
6  0  2

关于python - 为什么 pandas 会丢弃唯一的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33224356/

相关文章:

python - GAE 的 webapp2 i18n 无法识别 django 模板 {% trans %} 标签

Python检查输入中是否有数字?

python - Python 3.4 中的 `async for`

python - 使用 mpi4py 嵌套 mpi 调用

python - Python Gurobi 中覆盖约束的覆盖矩阵

python - 通过 python 或 ipython 终端运行 .py 文件时抑制 matplotlib 图形

python - 读取 "pickle"文件时出错,没有名为 'Data' 的模块

python - 填充 Pandas 中其他列的邻居值的值

python - Pandas df.to_excel 用于多个 dfs?

python - 将 MultiIndex 列组合到 Pandas 数据框中的单个索引