簡體   English   中英

計算熊貓數據框中的摘要行

[英]Calculating a summary row in a pandas dataframe

這是我迄今為止創建的(Pandas DataFrame):代碼:

table = pd.pivot_table(df1, index=['Assignee', 'IssueType'], columns=['Status'], values='Key', aggfunc={'Key': np.count_nonzero}, dropna=True)
table['Total'] = table.sum(axis=1)
table = table.fillna(0)
table = table.apply(pd.to_numeric, errors='ignore')
table = table.astype(int)
table.to_csv(output_file_path, sep=delimiter)

輸出:

Assignee~IssueType~Analysis~Blocked~Closed~Done~In Progress~Open~Ready For QA Testing~Total
Smith, John~Story~0~0~0~0~0~1~0~1
Smith, John~Sub-task~0~0~0~0~0~1~0~1
Smith, John~Task~0~0~0~0~2~5~0~7
Doe, Jane~Bug~0~0~0~0~1~0~0~1
Polo, Marco~Bug~0~0~0~0~0~2~0~2
Polo, Marco~Story~0~0~1~0~0~0~0~1
Polo, Marco~Task~1~0~0~0~4~2~0~7

這是我想要的(考慮到我可以有數字/非數字列:

Assignee~IssueType~Analysis~Blocked~Closed~Done~In Progress~Open~Ready For QA Testing~Total
    Smith, John~Story~0~0~0~0~0~1~0~1
    Smith, John~Sub-task~0~0~0~0~0~1~0~1
    Smith, John~Task~0~0~0~0~2~5~0~7
    Doe, Jane~Bug~0~0~0~0~1~0~0~1
    Polo, Marco~Bug~0~0~0~0~0~2~0~2
    Polo, Marco~Story~0~0~1~0~0~0~0~1
    Polo, Marco~Task~1~0~0~0~4~2~0~7
**GrandTotal~GrandTotal~1~0~1~0~7~11~0~20**

使用 Pandas DataFrames 實現這一目標的最佳/最佳方法是什么? 提前感謝您的幫助。

這是我對這個問題的回答。 也許還有改進的余地(但至少它讓我滿意)。

def append_summary_total(df_index, file_path, delimiter):
    file_path = os.path.abspath(file_path)
    delimiter = str(delimiter)
    df = pd.read_csv(file_path, sep=delimiter)
    sums = df.select_dtypes(pd.np.number).sum().rename('Grand Total')
    df.loc['Grand Total'] = df.select_dtypes(pd.np.number).sum()
    df = df.fillna("GrandTotal")
    df = df.set_index(df_index)
    df = df.apply(pd.to_numeric, errors='ignore')
    df = df.astype(int)
    df.to_csv(file_path, sep=delimiter)

這是輸出:示例輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM