python的drop duplicates,Python的pandas中,drop_duplicates函数怎么根据索引来去重

Python的pandas中,drop_duplicates函数怎么根据索引来去重

Python的pandas中,drop_duplicates函数怎么根据索引来去重数据是我预先设定好的,可能有重复... Python的pandas中,drop_duplicates函数怎么根据索引来去重数据是我预先设定好的,可能有重复

更新时间:2019-05-25 01:16

最满意答案

只能用索引切片的方式

如根据索引对data进行删除重复行,并保留第一个数据:

data_unique = data[~data.index.duplicated()]

2018-09-12 回答

其他回答

先看一个小例子

from pandas import Series, DataFrame

data = DataFrame({'k': [1, 1, 2, 2]})

print data

IsDuplicated = data.duplicated()

print IsDuplicated

print type(IsDuplicated)

data = data.drop_duplicates()

print data

执行结果是:

k

0 1

1 1

2 2

3 2

0 False

1 True

2 False

3 True

k

0 1

2 2

2018-09-13 回答

相关问答

只能用索引切片的方式 如根据索引对data进行删除重复行,并保留第一个数据: data_unique = data[~data.index.duplicated()]

您可以使用str.replace删除D字符串的结束数字部分: In [204]: df['D'] = df['D'].str.replace(r'_[0-9]+$', '')

In [205]: df

Out[205]:

A B C D

0 1 A_Task WID WI_DTL

1 1 A_adhoc_load ATT IXN

2 1 A_ad

...

熊猫版本0.20.3 python 3.6。 当我运行这段代码时: df.drop_duplicates(['b', 'D'])

有 KeyError:'b' 在你的例子中,第4行是奇怪的情况。 第一 df.loc[4,'B'] = 87

丢弃重复后: df.loc[4,'B'] = 82

看起来你在这些步骤之间有一些额外的操作。 Pandas version 0.20.3 python 3.6. When I run this line of code: df.drop_duplicate

...

IIUC,你的问题是如何使用任意函数来确定什么是重复的。 为了强调这一点,假设两个列表是重复的,如果第一个项目的总和加上第二个项目的平方在每种情况下是相同的 In [59]: In [118]: df = pd.DataFrame( {'A': [[1,2],[4,1],[2,3]]} )

(请注意,第一个和第二个列表是等价的,但不相同。) Python通常更喜欢比较函数的关键函数 ,所以在这里我们需要一个函数来说明列表的关键是什么; 在这种情况下,它是lambda l: l[0] + l[1]

...

如果你有一个数据帧 df = pd.DataFrame([['a',np.nan,np.nan,'M'],['a',12,np.nan,'M'],['c',np.nan,np.nan,'M'],['d',np.nan,np.nan,'M']],columns=['Name','Age','Region','Gender'])

基于nan计数对行进行排序,并通过保留第一个来删除具有子集'Name'的重复项可能有帮助 df['count'] = pd.isnull(df).sum(1)

df= df

...

如果您不希望在检查不同记录时考虑索引列,则可以使用以下命令删除列,或仅选择所需的列。 df = df.drop('p_index') // Pass column name to be dropped

df = df.select('name', 'age') // Pass the required columns

drop_duplicates()是dropDuplicates()的别名。 https://spark.apache.org/docs/latest/api/python/py

...

你可以调用reset_index然后再调用reset_index然后再调用reset_index : In [304]:

df = pd.DataFrame(data=np.random.randn(5,3), index=list('aabcd'))

df

Out[304]:

0 1 2

a 0.918546 -0.621496 -0.210479

a -1.154838 -2.282168 -0.060182

b 2.512519 -0

...

df.drop_duplicates(subset=['Variable','Value'],keep='first')

# time Variable Value

#2014-07-11 19:50:20 Var1 10

#2014-07-11 19:50:30 Var1 20

#2014-07-11 19:50:50 Var2 30

#2014-07-11 19:50:60 Var2 40

...

创建新列C :如果A列是数字,则在C指定公共值,否则在C指定唯一值。 在那之后,只需drop_duplicates正常。 注意 :有一个很好的isnumeric()方法用于测试单元格是否类似数字。 In [47]:

df['C'] = np.where(df.A.str.isnumeric(), 1, df.index)

print df

A B C

0 3 4 1

1 3 4 1

2 3 5 1

3 yes 8 3

4 no 8 4

5

...

将drop_duplicates与参数subset一起使用: df.drop_duplicates(subset=['A'],inplace=True)

print (df)

A B

0 John Miller

2 Mark Robinson

3 Jeffrey Robinson

文档: subset :列标签或标签序列,可选 仅考虑用于标识重复项的某些列,默认情况下使用所有列 Use drop_duplicates with par

...

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值