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
...