如何用python pandas处理以下不同类型的表格问题?
最近要处理表格进行分析,由于没有处理sql或csv的经验,遇到了以下问题,请求解决:
问题一:
companyID fresh
23865 13-2
23866 10-3
23867 8-12
如何新建字段Dash,其数值是对fresh每行数据以'-'左右的数值进行大小判断,如果'-'的左边大于右边,则为1,否则为0,例如13-2为1,8-12为0.
问题二:
companyID productID A B C D
23865 1 3.6 3.0 4.0 5.0
23865 2 3.0 3.5 4.5 5.5
23865 3 3.6 3.2 4.2 5.3
23866 1 2.2 3.3 3.8 5.1
23866 2 3.2 3.4 4.4 5.6
23866 3 3.5 3.4 4.6 5.3
23866 4 4.2 4.2 5.3 5.8
23867 2 3.2 3.3 4.4 5.4
23867 3 3.6 3.5 4.6 5.4
23867 4 4.4 4.1 5.5 5.8
(1)、productID表示产品种类,其值对应的是型号A.B.C.D的价格,如何将表转化为一家公司只占一行,全部产品和型号对应的价格都放在这个公司的行中
(2)、和(1)不同的是,生成每家公司为一行的数据后,只要产品2、4的A,B,C,D四种型号的价格,其余的不要。
(3)、接着(2)的操作,将A,B,C,D四种型号的价格按升序和降序排列(此时对应的产品productID也需要跟着做调整)
感谢网友+大神:老瓜
data={'companyID':[23865,23865,23865,23866,23866,23866,23866,23867,23867,23867],'productID':[1,2,3,1,2,3,4,2,3,4],'A'[3.6,3.0,3.6,2.2,3.2,3.5,4.2,3.2,3.6,4.4],'B'[3.0,3.5,3.2,3.3,3.4,3.4,4.2,3.2,3.6,4.4],'C'[4.0,4.5,4.2,3.8,4.4,4.6,5.3,4.4,4.6,5.5],'D'[5.0,5.4,5.3,5.1,5.6,5.3,5.8,5.5,5.3,5.8]}
dd=pd.DataFrame(data)
dd
进一步的,
(4),假若某型号的价格缺失,想利用距离最近的两个同产品型号公司价格的平均值代替,怎么解决呢?例如:companyID为23866,productID为2,其型号D的价格缺失,按照上述表达应该为companyID为23865,productID为2,其型号D的价格5.3,加上companyID为23867,productID为2,其型号D的价格5.5的平均值,即为5.4
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一、
df['Dash'] = df['fresh'].apply(lambda x: 1 if x.split('-')[0] < x.split('-')[1] else 0)
二、
df.groupby('companyID').agg(list)
df[df['productID'].isin([2,4])].groupby('companyID').agg(list)
df[df['productID'].isin([2,4])].groupby('companyID').agg(lambda x: sorted(list(x),reverse=True))
加入sorted
函数,reverse
参数负责升序和降序问题一: