熊猫在两个具有相同列的数据帧中减去值创建新的数据帧来存储结果

莫雷洛

我正在尝试创建一个新的数据框new_df,其中包含一个新列,其中包含减去 2 个单独数据框中相同列的值的差异:df1 df2

我曾尝试使用该代码,new_df.loc['difference'] = df1.loc['s_values'] - df2.loc['s_values']但无法实现我的结果。

在哪里 df1 =

                     stats  s_values
gender year               
women  2007         height   40
       2007  cigarette use   31

df2 =

                     stats  s_values
gender year               
Men    2007         height   10
       2007  cigarette use   11

达到预期的输出(我不想包括gender索引)

new_df =

                stats  difference
   year               
   2007         height  30
   2007  cigarette use  20
安德烈亚斯

你可以试试这个(完整的例子):

输入:

import pandas as pd

df1 = pd.DataFrame({'gender': {0: 'woman', 1: 'woman'},
 'year': {0: 2007, 1: 2007},
 'stats': {0: 'height', 1: 'cigarette use'},
 's_values': {0: 40, 1: 31}})

df2 = pd.DataFrame({'gender': {0: 'men', 1: 'men'},
 'year': {0: 2007, 1: 2007},
 'stats': {0: 'height', 1: 'cigarette use'},
 's_values': {0: 10, 1: 11}})

代码:

df = pd.concat([df1,df2], ignore_index=True)
df['s_values'] = df.groupby(['year', 'stats'])['s_values'].diff().abs()
df.dropna(subset=['s_values']).drop('gender', axis=1)

输出:

   year          stats  s_values
2  2007         height      30.0
3  2007  cigarette use      20.0

笔记:

如果两个数据帧的结构完全相同,则它甚至更短:

df1.drop('gender', axis=1).assign(s_values=df1['s_values'] - df2['s_values'])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从两个具有相同索引和列的熊猫数据帧执行计算的最快方法

基于具有相同对值的两列合并熊猫数据帧,但在两个数据帧中以不同顺序显示

如何在熊猫中减去两个相同的数据帧

Pyspark - 从两个不同的数据帧中减去列

从PySpark中的两个不同数据帧中减去列的值以找到RMSE

设置具有两个索引列的时间序列熊猫数据帧的频率

Spark 合并两个数据帧并通过覆盖第二个数据帧中的值来创建单个数据帧

根据现有数据帧中每两个连续行中的值创建数据帧

如果上面的行具有相同的值,则删除 Pandas 数据帧的两列中的值

在一个数据帧中拆分所有列,并在R中创建两个数据帧

如何基于2个数据帧中的共享列创建具有列值的新列?

使用Zoo或更好的软件包从R中的数据帧中减去具有两个因素的行

在熊猫的平均两个相同格式的数据帧

根据两个数据帧中两个现有列之间的匹配来添加和填充新列

查找具有存储在另一个数据帧中的值的数据帧

如何将熊猫数据帧的两列相乘(行乘法)并将结果存储在新列中?

Python Pandas:如何相互减去数据帧的特定列中的两个非连续行中的值

用两个具有相同索引和列的数据框创建新的数据框

比较两个具有差异长度的数据帧以找出特定列中的差异

根据一个公共列从两个数据帧中减去列

给定特定数据帧时,如何在矩阵中减去两个值?

当具有相似值的列具有相似的行值时合并两个不同的数据帧

根据两个数据帧中两个现有列之间的匹配来添加频率

如何通过逐列相乘来组合两个不同的多索引熊猫数据帧

如何从两个数据帧中删除不匹配的数据,以在R中创建一个新的数据帧

R:根据列中的值合并两个数据帧,并返回两个数据帧的所有值

从两个数据帧计算一个新的熊猫数据帧

从两组中随机抽取相等数量的元素-从一个具有相等元素数量的数据帧中创建两个子数据帧

Pandas 数据帧根据条件从同一数据帧中的两列中减去值?