日付範囲と場所の理由コードの数を含む列を持つピボットテーブルデータフレームがあります。パンダのデータフレームの各行の下に計算された行を追加します
理想的には、その特定の理由コードが表すその場所の総数の%の年齢の各場所の下に行を挿入したいと考えています。
したがって、列MS = 6でその行の合計が52の場合、その直下の行の列は11.5%になります。
さらに意味がある場合は、2番目の列として含めることもできます。
は、ここで私は現在、ここ
issue_query = """
select distinct int(obhssq), (obwhid), obrtrc, SUBSTRING(int(obivdt), 3, 2) as inv_month, ((SUBSTRING(int(obivdt), 3, 2) - 1)/3 + 1) as inv_quarter,
int(obivdt)
from hsdet where obrtrc != '' and obrtrc != 'TX' and obivdt > 170000 and obivdt < 990000 and obwhid in ('01', '03', '05', '06', '07', '08', '09', '11', '12')
"""
cursor.execute(issue_query)
total_issues = 0
hedrows = cursor.fetchall()
for row in hedrows :
total_issues = total_issues + 1
issue_df = pd.read_sql(issue_query, cnxn)
issue_df.rename(columns={'00001' : 'Invoices', 'OBWHID' : 'Warehouse', 'OBRTRC':'Reason', 'INV_MONTH':'Month', 'INV_QUARTER':'Quarter', '00006':'Date'}, inplace=True)
pivoted = pd.pivot_table(issue_df, index=["Warehouse", "Quarter"], values=["Invoices"], columns=['Reason'], aggfunc='count', fill_value=0)
pivoted['Total']= pivoted.sum(axis=1)
pivoted.loc['Total'] = pivoted.sum()
print(pivoted)
を使用しているコードは、私の現在の出力です:
Reason CE CS DG DR IC IO IP IW LC LD NC NO PB QC QW SC WH TTL
(01, 1) 9 4 4 0 1 8 7 5 0 0 17 5 2 2 2 2 0 68
(03, 1) 14 3 1 0 1 3 2 2 0 0 7 9 10 0 0 2 1 55
(05, 1) 4 2 1 0 3 1 5 1 1 0 4 1 0 1 2 1 0 27
(06, 1) 11 1 0 0 0 0 0 2 0 0 2 2 2 0 0 0 0 20
(07, 1) 0 5 0 0 0 4 1 0 0 0 1 1 0 0 0 0 0 12
(08, 1) 3 2 1 1 0 4 2 0 1 0 3 2 8 0 0 1 0 28
(09, 1) 6 1 0 1 0 0 0 0 0 0 2 0 2 0 0 1 0 13
(11, 1) 0 0 6 0 2 2 8 1 0 0 4 4 0 1 11 0 0 39
(12, 1) 10 3 1 0 0 1 9 0 0 1 2 6 0 0 0 0 0 33
Total 57 21 14 2 7 23 34 11 2 1 42 30 24 4 15 7 1 295
私は以下のように行を挿入したいと思います:
Invoices \
Reason CE CS DG DR IC IO IP IW LC LD NC NO PB QC QW SC WH TTL
(01, 1) 9 4 4 0 1 8 7 5 0 0 17 5 2 2 2 2 0 68
%age 13% 6% 6% 0% 1% 12% 10% 7% 0% 0% 25% 7% 3% 3% 3% 3% 0% 23%
ありがとう!
してください入力と期待される出力の例を追加してください。 – AndreyF
@AndreyF done。ありがとうございました! – AlliDeacon