pandas:为什么在这里df.replace()方法没作用?
最近利用pandas来帮同事完成一些无聊的工作,
从某个后台导出销量数据csv格式,想在读入csv数据成数据框后,就把仓库名称替换成它的简称,方便查看。
查阅文档后,说可以用Series.replace(),或者dataframe.replace()方法,
于是写了df.replace('AAA','BBB'),但是不知为什么没有作用,把数据框切片后形成Series,然后用Series.replace()方法也不行,不知道为什么
import csv
import pandas as pd
import numpy as np
from pandas import DataFrame,Series
csvfilename = 'suppReport.csv'
df=pd.DataFrame(pd.read_csv(csvfilename,header = 0 ,encoding='gbk'))
ss = df[['仓库编码']]
ss.replace('北领成都商超仓','北领成都')
ss.replace('科捷合肥商超仓','科捷合肥')
df.replace('科捷合肥商超仓','科捷合肥')
# view first 3 records
print(df[:3])
#看了打印结果,名称还是没替换成功= =b
#数据透视表
df_pivortable=pd.pivot_table(df,index=['商品id'],columns=['仓库编码'],
values=['销量'],aggfunc='sum',fill_value= 0,dropna=False)
#
dataframed_pivortable = pd.DataFrame(df_pivortable)
dataframed_pivortable.insert(0,'1',0) #插入列能成功
print(dataframed_pivortable)
print('executing...')
str_day_filename = '每日销量'+'.xlsx'
dataframed_pivortable.to_excel(str_day_filename, sheet_name='Sheet1')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
需要inplace=1
panda大量操作数据的函数都是not inplace的,新的df作为函数的返回值返回,要直接改动原df的话需要传inplace参数为True
批量替换大数据的时候inplace=True是不顶用的 a.f=a.f.replace(x,y) 这种形式好一些
有没有可能和这一列的数据类型有关系呢?
发现data['ss']的数据类型是Object,而替换的-999是int,所以按照上面代码里第一行那样写就会失败,需要先转换一下数据类型