dataframe row countcount会去重吗

使用 python 实现:
用最少循环次数快速删除dataframe中相同行? - 知乎4被浏览1213分享邀请回答drop_duplicates(*args, **kwargs) method of pandas.core.frame.DataFrame instance
Return DataFrame with duplicate rows removed, optionally only
considering certain columns
Parameters
----------
subset : column label or sequence of labels, optional
Only consider certain columns for identifying duplicates, by
default use all of the columns
keep : {'first', 'last', False}, default 'first'
- ``first`` : Drop duplicates except for the first occurrence.
- ``last`` : Drop duplicates except for the last occurrence.
- False : Drop all duplicates.
take_last : deprecated
inplace : boolean, default False
Whether to drop duplicates in place or to return a copy
deduplicated : DataFrame
2添加评论分享收藏感谢收起python pandas dataframe 去重函数
时间: 09:33:03
&&&& 阅读:1407
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&今天笔者想对pandas中的行进行去重操作,找了好久,才找打相关的函数
先看一个小例子
&span style=&font-size:18&&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
DataFrame的duplicated方法返回一个布尔型Series,表示各行是否重复行。
而 drop_duplicates方法,它用于返回一个移除了重复行的DataFrame
这两个方法会判断全部列,你也可以指定部分列进行重复项判段。
例如,希望对名字为k2的列进行去重,
data.drop_duplicates([‘k2‘])
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:&&&&&&原文:http://blog.csdn.net/xinxing__8185/article/details/
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!6818人阅读
pandas(64)
pandas的索引函数主要有三种:
loc 标签索引,行和列的名称
iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0
ix 是 iloc 和 loc的合体
at是loc的快捷方式
iat是iloc的快捷方式
建立测试数据集:
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c'],'c': ["A","B","C"]})
选择某一行
print(df.loc[1,:])
Name: 1, dtype: object
print(df.loc[1:2,:])
print(df.loc[::-1,:])
print(df.loc[0:2:2,:])
普通条件筛选
print(df.loc[:,"a"]&2)
Name: a, dtype: bool
print(df.loc[df.loc[:,"a"]&2,:])
另外条件筛选还可以集逻辑运算符 | for or, & for and, and ~for not
In [129]: s = pd.Series(range(-3, 4))
In [132]: s[(s & -1) | (s & 0.5)]
dtype: int64
非索引列使用isin
In [141]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')
In [143]: s.isin([2, 4, 6])
dtype: bool
In [144]: s[s.isin([2, 4, 6])]
dtype: int64
索引列使用isin
In [145]: s[s.index.isin([2, 4, 6])]
dtype: int64
# compare it to the following
In [146]: s[[2, 4, 6]]
dtype: float64
结合any()/all()在多列索引时
In [151]: df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': ['a', 'b', 'f', 'n'],
'ids2': ['a', 'n', 'c', 'n']})
In [156]: values = {'ids': ['a', 'b'], 'ids2': ['a', 'c'], 'vals': [1, 3]}
In [157]: row_mask = df.isin(values).all(1)
In [158]: df[row_mask]
In [1]: dates = pd.date_range('1/1/2000', periods=8)
In [2]: df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
In [3]: df
2000-01-01
0.469112 -0.282863 -1.509059 -1.135632
2000-01-02
1.212112 -0.173215
0.119209 -1.044236
2000-01-03 -0.861849 -2.104569 -0.494929
2000-01-04
0.721555 -0.706771 -1.039575
2000-01-05 -0.424972
0.276232 -1.087401
2000-01-06 -0.673690
0.113648 -1.478427
2000-01-07
0.577046 -1.715002 -1.039268
2000-01-08 -0.370647 -1.157892 -1.344312
In [162]: df.where(df & 0, -df)
2000-01-01 -2.104139 -1.309525 -0.485855 -0.245166
2000-01-02 -0.352480 -0.390389 -1.192319 -1.655824
2000-01-03 -0.864883 -0.299674 -0.227870 -0.281059
2000-01-04 -0.846958 -1.222082 -0.600705 -1.233203
2000-01-05 -0.669692 -0.605656 -1.169184 -0.342416
2000-01-06 -0.868584 -0.948458 -2.297780 -0.684718
2000-01-07 -2.670153 -0.114722 -0.168904 -0.048048
2000-01-08 -0.801196 -1.392071 -0.048788 -0.808838
DataFrame.where() differs from numpy.where()的区别
In [172]: df.where(df & 0, -df) == np.where(df & 0, df, -df)
当series对象使用where()时,则返回一个序列
In [141]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')
In [159]: s[s & 0]
dtype: int64
In [160]: s.where(s & 0)
dtype: float64
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
当在有权重筛选时,未赋值的列权重为0,如果权重和不为1,则将会将每个权重除以总和。random_state可以设置抽样的种子(seed)。axis可是设置列随机抽样。
In [105]: df2 = pd.DataFrame()
In [106]: df2.sample(n = 3, weights = 'weight_column')
weight_column
df.loc[3,:]=4
pandas里并没有直接指定索引的插入行的方法,所以要自己设置
line = pd.DataFrame({df.columns[0]:"--",df.columns[1]:"--",df.columns[2]:"--"},index=[1])
df = pd.concat([df.loc[:0],line,df.loc[1:]]).reset_index(drop=True)#df.loc[:0]这里不能写成df.loc[0],因为df.loc[0]返回的是series
df.loc[[1,2],:]=df.loc[[2,1],:].values
df.drop(0,axis=0,inplace=True)
在以时间作为索引的数据框中,索引是以整形的方式来的。
In [39]: dfl = pd.DataFrame(np.random.randn(5,4), columns=list('ABCD'), index=pd.date_range('',periods=5))
In [40]: dfl
2013-01-01
1.075770 -0.109050
1.643563 -1.469388
2013-01-02
0.357021 -0.674600 -1.776904 -0.968914
2013-01-03 -1.294524
0.276662 -0.472035
2013-01-04 -0.013960 -0.362543 -0.006154 -0.923061
2013-01-05
0.805244 -1.206412
In [41]: dfl.loc['':'']
2013-01-02
0.357021 -0.674600 -1.776904 -0.968914
2013-01-03 -1.294524
0.276662 -0.472035
2013-01-04 -0.013960 -0.362543 -0.006154 -0.923061
选择某一列
print(df.loc[:,"a"])
Name: a, dtype: int64
print(df.loc[:,"a":"b"])
增加列,如果对已有的列,则是赋值
df.loc[:,"d"]=4
交换两列的值
df.loc[:,['b', 'a']] = df.loc[:,['a', 'b']].values
1)直接del DF[‘column-name’]
2)采用drop方法,有下面三种等价的表达式:
DF= DF.drop(‘column_name’, 1);
DF.drop(‘column_name’,axis=1, inplace=True)
DF.drop([DF.columns[[0,1,]]], axis=1,inplace=True)
df.drop("a",axis=1,inplace=True)
还有一些其他的功能:
切片df.loc[::,::]
选择随机抽样df.sample()
去重.duplicated()
查询.lookup
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:112846次
积分:4202
积分:4202
排名:第7875名
原创:220篇
转载:28篇
译文:98篇
评论:14条
(55)(30)(9)(58)(21)(45)(29)(32)(17)(10)(40)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'python学习(34)
转自:http://bluewhale.cc//use-pandas-filter-and-sort.html
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&
DataFrame的duplicated方法返回一个布尔型Series,表示各行是否重复行。
而 drop_duplicates方法,它用于返回一个移除了重复行的DataFrame
这两个方法会判断全部列,你也可以指定部分列进行重复项判段。
例如,希望对名字为k2的列进行去重
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:58321次
排名:千里之外
原创:23篇
转载:72篇
(2)(4)(3)(2)(4)(19)(3)(5)(2)(9)(8)(9)(8)(11)(7)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'}

我要回帖

更多关于 dataframe 索引去重 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信