类似于groupby函数用法,适用于对同一个标签(列名)内的数据做处理
以下代码对df中食物名称相同的数据划分为多个df,在每个df中指定列求和并将和添加到最后一列,将小df替换为最后一列数值,包括所有列的文字、数值,最后合并多个小df形成新的df
df_dict = {}
a = df['食物名称'].unique()
for i in a:
data = df[df['食物名称'].isin([i])]
df_dict["df" + str(i)] = data
df = []
# 访问存储在字典中的小DataFrame
for i in a:
df_name = "df" + str(i)
df_data = df_dict[df_name]
# print(df_data)
df_data.loc['Col_sum'] = df_data.iloc[:, 8:].sum(axis=0) # 对0,1行按列求和,生成新行
df_data.iloc[-1, 0] = df_data.iloc[-2, 0] # 对最后一行1行第一列按列求和,生成新行
df_data.iloc[-1, 1] = df_data.iloc[-2, 1]
df_data.iloc[-1, 2] = df_data.iloc[-2, 2]
df_data.iloc[-1, 3] = df_data.iloc[-2, 3]
df_data.iloc[-1, 4] = df_data.iloc[-2, 4]
df_data.iloc[-1, 5] = df_data.iloc[-2, 5]
df_data.iloc[-1, 6] = df_data.iloc[-2, 6]
df_data.iloc[-1, 7] = df_data.iloc[-2, 7]
df_data = df_data.iloc[-1, :] # 重新赋值,取最后一行
df_data = df_data.values.tolist() # 转换数值类型
df.append(df_data) # 合并多个dataframe