这是一个关于 pandas 从根本到进阶的练习题系列,来源于 github 上的 guipsamora/pandas_exercises 。这个项目从根本到进阶,可以考验你有多么理解 pandas。
我会挑选一些题目,并且供应比原题库更多的办理方法以及更详尽的解析。
操持每天更新一期,希望各位小伙伴先自行思考,再查看答案。如果对你有帮助,记得转发推举给你的好友!

上期文章:pandas每天一题-题目5:统计空值数量也有多种实现办法
后台回答"数据",可以下载本题数据集
如下数据:
数据描述:
此数据是订单明细表。一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项order_id 列存在重复quantity 是明细项数量需求:将价格列转成数值
下面是答案了
办法1这是源项目的办理办法:
df = pd.read_csv('chipotle.tsv', sep='\t', dtype={'order_id': str})dollarizer = lambda x: float(x[1:-1])df.item_price = df.item_price.apply(dollarizer)df
点评:
这种办法不是 pandas 的风格办法2pandas 为文本列供应了切片办法:
df['item_price'].str[1:-1]
同样地,也有方法直接转类型:
df['item_price'] = df['item_price'].str[1:-1].astype(float)df
点评:
这种办法比起办法1更加大略直不雅观。缺陷是须要记住 pandas 的方法,而且如果你希望加载数据的时候就做转换,那么办法1更加得当。办法3大部分从文件加载数据的方法都会供应一个转换的参数,让你可以在数据加载成 DataFrame 之前做类型转换:
df = pd.read_csv('chipotle.tsv', sep='\t', converters={'item_price': lambda x: float(x[1:-1])})df
点评:
有时候我们必须在数据转成 DataFrame 之前做精确的处理,比如身份证号码,如果加载后已经变成科学计数法,那么你是没有机会转回精确的文本。这种解法就适宜利用推举阅读:
Python办理Sql题目,pandas其他思路解法,原来这么大略 这个烂大街的用户消费剖析案例,我用了点不一样的pandas技巧