Pandas

pandas修改DataFrame列名的方法

一、更改DataFrame的某些值

df1.loc[0,‘age’]=25 # 思路:先用loc找到要更改的值,再用赋值(=)的方法实现更换值
df1.iloc[0,2]=25 # iloc:用索引位置来查找
at 、iat只能更换单个值
df1.at[0,‘age’]=25 # iat 用来取某个单值,参数只能用数字索引
df1.iat[0,2]=25

二、插入新增列、行

df1[‘city’]=[‘北京’,‘山西’,‘湖北’,‘澳门’] # 给city列赋值
col_name=df1.columns.tolist() # 将数据框的列名全部提取出来存放在列表里
print(col_name)

col_name.insert(2,‘city’) # 在列索引为2的位置插入一列,列名为:city,刚插入时不会有值,整列都是NaN
df1=df1.reindex(columns=col_name) # DataFrame.reindex() 对原行/列索引重新构建索引值

new=pd.DataFrame({‘name’:‘lisa’,
‘gender’:‘F’,
‘city’:‘北京’,
‘age’:19,
‘score’:100},
index=[1]) # 自定义索引为:1 ,这里也可以不设置index
print(new)

print("-------在原数据框df1最后一行新增一行,用append方法------------")
df1=df1.append(new,ignore_index=True) #

pandas增加行、列,并使用函数

table=pd.read_excel(r’C:\Users\Administrator\Desktop\sourses\vip_product.xls’)

table[‘各店占比’]=table[‘石斛’]/sum(table[‘石斛’]) #增加一列,值为每行/总数

def sum_x(x):
try:
sum(x)
return sum(x)
except:
return (‘总计’) #定义一个函数,如果是数字就求和,不是数字就返回“总计"两个字(常做表的人懂得)。

table.loc[table[‘办事处’].count()]=table.apply(sum_x) #对每列运行

apply方法传入dataframe多列进行函数操作

dataSet[‘星座’] = dataSet.apply(lambda x :date2Constellation(x[‘出生月份’],x[‘出生日’]),axis=1)

pandas教程:[15]移动复制删除列


删 drop pop
插 insert

字符串列的合并
在某列加上某一特定的字符串
含有数值列的合并

str.split()、str.extract()、str.replace ,str.cat()函数

apply方法传递参数

df = pd.read_excel(fileName)
df[‘TimeInterval’] = df.apply(getInterval_new ,
axis = 1, args = (‘ReceivedTime’,‘PublishedTime’)) #调用方式一
#下面的调用方式等价于上面的调用方式
df[‘TimeInterval’] = df.apply(getInterval_new ,
axis = 1, **{‘before’:‘ReceivedTime’,‘after’:‘PublishedTime’}) #调用方式二
#下面的调用方式等价于上面的调用方式
df[‘TimeInterval’] = df.apply(getInterval_new ,
axis = 1, before=‘ReceivedTime’,after=‘PublishedTime’) #调用方式三

单个参数

def plus(df,n):
df[‘c’] = (df[‘a’]+df[‘b’])
df[‘d’] = (df[‘a’]+df[‘b’]) * n
return df
list1 = [[1,3],[7,8],[4,5]]
df1 = pd.DataFrame(list1,columns=[‘a’,‘b’])
df1 = df1.apply(plus,axis=1,args=(2,))
print df1

多个参数

def plus(df,n,m):
df[‘c’] = (df[‘a’]+df[‘b’]) * m
df[‘d’] = (df[‘a’]+df[‘b’]) * n
return df
list1 = [[1,3],[7,8],[4,5]]
df1 = pd.DataFrame(list1,columns=[‘a’,‘b’])
df1 = df1.apply(plus,axis=1,args=(2,3,))
print df1

如果是传整个dataframe,apply引用时不用带参数。
def error_ab(a1a2):
    return (a1a2['Overall']-a1a2['Random'])/a1a2['Overall']

a1a2['Rand.%error']=a1a2.apply(error_ab,axis=1)

lambda匿名函数

add = lambda x, y : x+y
add(1,2) # 结果为3

1 应用在函数式编程中

Python提供了很多函数式编程的特性,如:map、reduce、filter、sorted等这些函数都支持函数作为参数,lambda函数就可以应用在函数式编程中。
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))

2、应用在闭包中

def get_y(a,b):
return lambda x:ax+b
y1 = get_y(1,1)
y1(1) # 结果为2

python大作战之*args和**kwargs的区别

1:*args的功能:------接收N个位置参数,转换成元组tuple形式

2:**kwargs的功能------接收N个关键字参数,转换成字典dict形式

>>> def test3(*args,**kwargs):
	print(args)
	print(kwargs)
>>> test3(1,2,3,age=19,sex='F')
(1, 2, 3)
{'age': 19, 'sex': 'F'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值