[英]Pandas GroupBy Total Row for Days of the Week, then sum only on one column
I attempted this by:我尝试这样做:
df = {
'inc_date':['06-Jul-2020','06-Jul-2020','06-Jul-2020','07-Jul-2020','08-Jul-2020','08-Jul-2020','09-Jul-2020',],
}
df = pd.DataFrame(dict(df))
df['inc_Day_of_Week'] = pd.DatetimeIndex(df['inc_date']).day_name() # Create ddd of the INC
print(df)
dfTemp = df.groupby(['inc_Day_of_Week']).size()
dfTemp = dfTemp.reset_index(name='inc_volume').sort_index()
# Add sorting so days of week appear Mon-Fri
cats = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
dfTemp['inc_Day_of_Week'] = pd.Categorical(dfTemp['inc_Day_of_Week'], categories=cats, ordered=True)
dfTemp.loc['Total'] = dfTemp.sum(numeric_only=True)
display(dfTemp)
print("", end='\n')
inc_Day_of_Week inc_volume
0 Monday 3.0
1 Thursday 1.0
2 Tuesday 1.0
3 Wednesday 2.0
Total NaN 7.0
This is whats required except for the NaN
ie How to remove the NaN
only sum on the one column?这是除了
NaN
之外所需的内容,即如何仅删除一列上的NaN
总和?
Total 7.0
I tried to append but this does fail:我试图追加,但这确实失败了:
dfTotal1 = [[dfTemp.inc_volume.sum()]]
dfTotal2 = pd.DataFrame(dfTotal1,columns=['inc_volume'])
dfTemp.append(dfTotal2)
Replacing NaN
values with ""
should solve your query.用
""
替换NaN
值应该可以解决您的查询。 After you add the Total
row to the dfTemp
DataFrame, add this line of code将
Total
行添加到dfTemp
DataFrame 后,添加这行代码
CODE代码
dfTemp.fillna(value="", inplace=True)
If you want to avoid calculating sum on categorical variables directly,如果您想避免直接计算分类变量的总和,
dfTotal = pd.DataFrame({"inc_Day_of_Week": "", "inc_volume": dfTemp.inc_volume.sum()}, index=["Total"])
dfTemp = pd.concat([dfTemp, dfTotal])
OUTPUT输出
inc_Day_of_Week inc_volume
0 Monday 3.0
1 Thursday 1.0
2 Tuesday 1.0
3 Wednesday 2.0
Total 7.0
You can also try this,你也可以试试这个
import pandas as pd
df = {
'inc_date':['06-Jul-2020','06-Jul-2020','06-Jul-2020','07-Jul-2020','08-Jul-2020','08-Jul-2020','09-Jul-2020',],
}
df = pd.DataFrame(dict(df))
df['inc_Day_of_Week'] = pd.DatetimeIndex(df['inc_date']).day_name()
df = pd.DataFrame(df.groupby('inc_Day_of_Week').count()).reset_index()
df.loc['Total'] = df.sum(numeric_only=True)
df.fillna(value='',inplace=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.