Pandas 熊猫丢弃了你的复制品。保持第一和最后。可能吗?

Pandas 熊猫丢弃了你的复制品。保持第一和最后。可能吗?,pandas,drop-duplicates,Pandas,Drop Duplicates,我有这个数据帧,我需要删除所有重复项,但我需要保留第一个和最后一个值 例如: 1 0 2 0 3 0 4 0 输出: 1 0 4 0 我尝试了df.column.drop_duplicateskeep=first,last,但它没有返回单词 ValueError:keep必须为first、last或False 有人知道这有什么转机吗 谢谢,您可以使用该函数创建包含第一个值和最后一个值的数据帧 pd.concat([ df['X

我有这个数据帧,我需要删除所有重复项,但我需要保留第一个和最后一个值

例如:

1      0

2     0

3     0

4     0
输出:

1     0

4     0
我尝试了df.column.drop_duplicateskeep=first,last,但它没有返回单词

ValueError:keep必须为first、last或False

有人知道这有什么转机吗

谢谢,您可以使用该函数创建包含第一个值和最后一个值的数据帧

pd.concat([
    df['X'].drop_duplicates(keep='first'),
    df['X'].drop_duplicates(keep='last'),
])
您可以使用该函数创建包含第一个值和最后一个值的数据帧

pd.concat([
    df['X'].drop_duplicates(keep='first'),
    df['X'].drop_duplicates(keep='last'),
])

在名为column的列上使用groupby,然后重新索引。如果要在多个列中检查重复值,可以扩展groupby中包含的列

df = pd.DataFrame({'column':[0,0,0,0]})
输入:

   column
0       0
1       0
2       0
3       0
输出:

   column
0       0
3       0

在名为column的列上使用groupby,然后重新索引。如果要在多个列中检查重复值,可以扩展groupby中包含的列

df = pd.DataFrame({'column':[0,0,0,0]})
输入:

   column
0       0
1       0
2       0
3       0
输出:

   column
0       0
3       0

你不能同时放弃第一个和最后一个。。。所以这个技巧对于第一个和最后一个数据帧来说太过复杂了

当您发现一个必须处理创建非重复的副本。所以在第二个数据帧中只有concat唯一索引。不确定合并/加入是否会更好

import pandas as pd

d = {1:0,2:0,10:1, 3:0,4:0}

df = pd.DataFrame.from_dict(d, orient='index', columns=['cnt'])
print(df)

    cnt
1     0
2     0
10    1
3     0
4     0
然后这样做:

d1 = df.drop_duplicates(keep=("first"))
d2 = df.drop_duplicates(keep=("last"))
d3 = pd.concat([d1,d2.loc[set(d2.index) - set(d1.index)]])
d3
Out[60]:
cnt
1   0
10  1
4   0

你不能同时放弃第一个和最后一个。。。所以这个技巧对于第一个和最后一个数据帧来说太过复杂了

当您发现一个必须处理创建非重复的副本。所以在第二个数据帧中只有concat唯一索引。不确定合并/加入是否会更好

import pandas as pd

d = {1:0,2:0,10:1, 3:0,4:0}

df = pd.DataFrame.from_dict(d, orient='index', columns=['cnt'])
print(df)

    cnt
1     0
2     0
10    1
3     0
4     0
然后这样做:

d1 = df.drop_duplicates(keep=("first"))
d2 = df.drop_duplicates(keep=("last"))
d3 = pd.concat([d1,d2.loc[set(d2.index) - set(d1.index)]])
d3
Out[60]:
cnt
1   0
10  1
4   0