2 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
Index.union
如果不存在,則用于向列名稱(chēng)添加新值DataFrame.reindex
:
cols = table.columns.union(['To Be Paid'], sort=False)
table = table.reindex(cols, axis=1, fill_value=0)
print (table)
? ? ? ? ? Overdue? Paid? Paid OTP? Upsell? To Be Paid
Name? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Bob? ? 0? ? ? ? 0? ?300? ? ? ? ?0? ? ? ?0? ? ? ? ? ?0
Jane? ?0? ? ? ? 0? ? ?0? ? ? ? ?0? ? ? 60? ? ? ? ? ?0
Susan? 0? ? ? 200? ? ?0? ? ? ?300? ? ? ?0? ? ? ? ? ?0

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
您還可以將列轉(zhuǎn)換Status為分類(lèi),并確?!按犊睢笔钱?dāng)前類(lèi)別(即使它未在數(shù)據(jù)中表示)
df = pd.DataFrame({'Name': ['Bob', 'Bob', 'Susan', 'Susan', 'Jane','Jane'],
'Status': ['Paid', 'Paid', 'Paid OTP', 'Overdue', '', 'Upsell'],
'Amt': [100, 200, 300, 200, 0,60]})
df["Status"] = pd.Categorical(df["Status"])
if "To Be Paid" not in df["Status"].cat.categories:
df["Status"].cat.add_categories("To Be Paid", inplace=True)
df.pivot_table(values='Amt', index='Name', columns='Status', aggfunc=np.sum, fill_value=0, dropna=False)
Status Overdue Paid Paid OTP Upsell To Be Paid
Name
Bob 0 0 300 0 0 0
Jane 0 0 0 0 60 0
Susan 0 200 0 300 0 0
添加回答
舉報(bào)