dataframe设置两个条件取值的实例
技术  /  管理员 发布于 7年前   162
如下所示:
>>> import pandas as pd>>> import numpy as np>>> from pandas import Series, DataFrame>>> df = DataFrame({'name':['a','a','b','b'],'classes':[1,2,3,4],'price':[11,22,33,44]})>>> df classes name price0 1 a 111 2 a 222 3 b 333 4 b 44>>>
根据index和columns取值
>>> s = df.loc[0,'price']>>> s11
根据同行的columns的值取同行的另一个columns的值
>>> sex = df.loc[(df.classes==1)&(df.name=='a'),'price']>>> sex0 11Name: price, dtype: int64>>> sex = df.loc[(df.classes==1)&(df.name=='a'),'price'].values[0]>>> sex11
根据条件同时取得多个值
>>> name,price = df.loc[df.classes==1,('name','price')].values[0]>>> name'a'>>> price11>>>
对一列赋值
>>> df.loc[: , 'price']=0>>> df classes name price0 1 a 01 2 a 02 3 b 03 4 b 0>>>
对df的一个列进行函数运算
【1】>>> df['name'] = df['name'].apply(lambda x: x.upper())>>> df classes name price0 1 A 111 2 A 222 3 B 333 4 B 44【2】>>> df.loc[:, 'name'] = df['name'].apply(lambda x: x.upper())>>> df classes name price0 1 A 111 2 A 222 3 B 333 4 B 44>>>
对df的几个列进行函数运算
【1】>>> df[['classes','price']] = df[['classes', 'price']].applymap(lambda x: str(x))>>> print(type(df.loc[0, "classes"]))<class 'str'>>>> print(df.loc[0, "classes"])1【2】>>> df.loc[:, ['classes','price']] = df[['classes', 'price']].applymap(lambda x: int(x))>>> print(type(df.loc[0, "classes"]))<class 'int'>>>> print(df.loc[0, "classes"])1>>>
对两个列进行去重
>>> df classes name price0 1 a 111 1 a 222 3 b 333 4 b 44>>> df.drop_duplicates(subset=['classes', 'name'], inplace=True)>>> df classes name price0 1 a 112 3 b 333 4 b 44
多个条件分割字符串
>>> fund_memeber = '赵四、 王五'>>> fund_manager_list = re.split('[;, 、]', fund_memeber)>>> fund_manager_list['赵四', '', '王五']#DataFrame构造器>>> df = DataFrame({'x':[1],'y':[2]})>>> df x y0 1 2>>>
删除某列值为特定值得那一行
>>> df = DataFrame({'name':['a','b','c','d'],'classes':[1,2,3,4],'price':[11,22,33,44]})>>> df classes name price0 1 a 111 2 b 222 3 c 333 4 d 44【方法一】>>> df = df.loc[df['name']!='a']>>> df classes name price1 2 b 222 3 c 333 4 d 44>>> 【方法二】 df.drop(df[df.name=='a'].index,axis=0) #筛选df的每列值包含某个字段‘/a' >>> import pandas as pd>>> df = pd.DataFrame({'a':['A', 'B'], 'b': ['AA', 'BB']})>>> df a b0 A AA1 B BB>>> df[df['a'].str.contains(r'A')] a b0 A AA>>> df = pd.DataFrame({'a':['/api/', 'B'], 'b': ['AA', 'BB']})>>> df a b0 /api/ AA1 B BB>>> df[df['a'].str.contains(r'/api/')] a b0 /api/ AA>>>
把列变成index和把index变成列
df request_url visit_times9 fofeasy_产品基本信息 78 投顾挖掘 65 投顾挖掘 56 投顾挖掘 57 fofeasy_产品基本信息 53 fofeasy_产品基本信息 44 fofeasy_产品基本信息 42 投顾挖掘 20 行业数据――其他 11 行业数据――其他 1x = df.set_index('request_url')x visit_timesrequest_url fofeasy_产品基本信息 7投顾挖掘 6投顾挖掘 5投顾挖掘 5fofeasy_产品基本信息 5fofeasy_产品基本信息 4fofeasy_产品基本信息 4投顾挖掘 2行业数据――其他 1行业数据――其他 1x.reset_index('request_url') request_url visit_times0 fofeasy_产品基本信息 71 投顾挖掘 62 投顾挖掘 53 投顾挖掘 54 fofeasy_产品基本信息 55 fofeasy_产品基本信息 46 fofeasy_产品基本信息 47 投顾挖掘 28 行业数据――其他 19 行业数据――其他 1
pandas 按照列A分组,将同一组的列B求和,生成新的Dataframe
>>>df.groupby(by=['request_url'])['visit_times'].sum()>>>request_urlfofeasy_产品基本信息 20投顾挖掘 18行业数据――其他 2Name: visit_times, dtype: int64
dict变成dataframe
In [15]: dict = pd.DataFrame({'x':1, 'y':2}, index=[0])In [16]: dictOut[16]: x y0 1 2
iloc
In [69]: df1.iloc[1:5, 2:4]Out[69]: 4 62 0.301624 -2.1798614 1.462696 -1.7431616 1.314232 0.6905798 0.014871 3.357427
以上这篇dataframe设置两个条件取值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号