作者rounders (望仔)
看板Python
标题[问题] pandas重覆栏位
时间Sun Jun 7 18:39:17 2020
今天拿到了一笔资料如下
日期 区域 缴费方式 金额 缴费方式 金额 缴费方式 金额 缴费方式 金额
0601 桃园 A 500 B 50 C 85 D 70
0601 台北 A 300 B 55 C 90 D 75
0602 高雄 A 105 B 150 C 70 D 85
0603 台中 A 150 B 500 C 10 D 95
想依缴费方式做分类汇总,所以表格要变成
日期 区域 缴费方式 金额
0601 桃园 A 500
0601 桃园 B 50
0601 桃园 C 85
0601 桃园 D 70
0601 台中 A 300
0601 台中 B 55
0601 台中 C 90
0601 台中 D 75
0602....
目前想到是分栏读成多个DF再合并,但缴费方式很多,想请问还有其他方式吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.133.189.27 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1591526359.A.E61.html
1F:推 cuteSquirrel: column能改标签名字的话,会方便很多。 06/07 22:37
3F:→ rounders: 感谢,试成功了。如果又多一栏金额好像就不能了 06/11 20:16
4F:推 cuteSquirrel: 依照范例试试看吧 记得新的栏位的column也要改标签 06/11 22:33
在每个方法加上笔数
堆叠没弄出来,用创两DF在合并成功了
import pandas as pd
data = pd.DataFrame(
[['0601', 'Taoyuan', 'A', 10, 500, 'B',5, 50, 'C',50, 85, 'D',2, 70],
['0601', 'Taipei', 'A', 1, 300, 'B',9, 55, 'C',7, 90, 'D',3, 75],
['0602', 'Kaohsiung', 'A',2, 105, 'B',20, 150, 'C',25, 70, 'D',6, 85],
['0603', 'Taichung', 'A', 3, 150, 'B', 10,500, 'C',20, 10, 'D',11,
95]],
columns=['Date', 'Region', 'Method_A', 'ca','A', 'Method_B', 'cb','B',
'Method_C','cc', 'C', 'Method_D','cd', 'D'])
data_selected = data[['Date','Region','A','B','C','D']]
data_output = data_selected.set_index(['Date',
'Region']).stack().reset_index()
data_selected1 = data[['Date','Region','ca','cb','cc','cd']]
data_output1 = data_selected1.set_index(['Date',
'Region']).stack().reset_index()
ok = pd.merge(data_output,data_output1,on=['Date','Region'])
ok = ok[['Date','Region','level_2_x','0_y','0_x']]
ok.columns = ['Date','Region','Method','Num','Money']
※ 编辑: rounders (220.133.189.27 台湾), 06/22/2020 22:48:02