在Pandas 2.0中为DataFrame添加符合特定计算规则的行
解决方法
假设你使用Pandas处理DataFrame,以下是实现需求的具体步骤:
- 导入库并准备原始数据
先创建(或加载)你现有的DataFrame:
import pandas as pd df = pd.DataFrame({ 'A': [1, 5, 6], 'B': [2, 6, 8], 'C': [3, 7, 10], 'D': [4, 8, 12], 'Total': [10, 26, 36] })
- 计算列总和行(若未添加)
如果你还没有存储每列总和的行,先计算并添加:
df.loc['Col_Sum'] = df.sum(numeric_only=True)
- 构造目标新行
根据你的预期结果,新行的差值是列总和行中后一列与前一列差值的一半(以此得到2,2,2,24的结果)。先计算这些差值,再构造新行:
# 计算列总和的后列减前列,去掉A列的NaN值 diff_values = df.loc['Col_Sum'].diff().drop('A') / 2 # 构造新行:第一列为NaN,其余为计算出的差值 new_row = pd.Series([pd.NA] + diff_values.tolist(), index=df.columns, name='Diff_Row')
- 合并新行到原DataFrame
使用concat将新行添加到原DataFrame(Pandas 2.0+已弃用append,推荐用concat):
df = pd.concat([df, new_row.to_frame().T])
执行完以上代码后,你的DataFrame就会添加符合要求的新行,最终结果如下:
A B C D Total 0 1.0 2.0 3.0 4.0 10.0 1 5.0 6.0 7.0 8.0 26.0 2 6.0 8.0 10.0 12.0 36.0 Col_Sum 12.0 16.0 20.0 24.0 72.0 Diff_Row NaN 2.0 2.0 2.0 24.0
如果你不需要保留列总和行,可以在添加新行后用df = df.drop('Col_Sum')删除它。
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

