Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/pandas/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何基于行计算将新列附加到我的数据帧?_Python 2.7_Pandas - Fatal编程技术网

Python 2.7 如何基于行计算将新列附加到我的数据帧?

Python 2.7 如何基于行计算将新列附加到我的数据帧?,python-2.7,pandas,Python 2.7,Pandas,假设我有一个包含两列的Pandas数据框:1)user_id,2)steps(包含给定日期的步骤数)。现在,我想计算步骤数和前面测量中的步骤数之间的差值(保证在我的数据帧中测量是有序的) 因此,基本上这可以归结为在我的数据框中追加一个额外的列,其中该数据框的行值与该行中“steps”列的值相匹配,减去上面一行中“steps”列的值(如果这是第一行,则为0)。为了使事情进一步复杂化,我想计算每个用户id的差异,所以我想确保不减去具有不同用户id的两行的步长值 有人知道如何使用Python2.7和P

假设我有一个包含两列的Pandas数据框:1)user_id,2)steps(包含给定日期的步骤数)。现在,我想计算步骤数和前面测量中的步骤数之间的差值(保证在我的数据帧中测量是有序的)

因此,基本上这可以归结为在我的数据框中追加一个额外的列,其中该数据框的行值与该行中“steps”列的值相匹配,减去上面一行中“steps”列的值(如果这是第一行,则为0)。为了使事情进一步复杂化,我想计算每个用户id的差异,所以我想确保不减去具有不同用户id的两行的步长值

有人知道如何使用Python2.7和Panda完成这项工作吗

因此,我们举一个例子来说明这一点

输入示例:

user_id     steps
   1015       48
   1015       23
   1015       79
   1016       10
   1016       20
期望输出:

user_id     steps    d_steps
   1015       48          0
   1015       23        -25
   1015       79         56
   2023       10          0
   2023       20         10

您的输出显示不在原始数据中的用户ID,但以下内容符合您的要求,您必须用0替换/填充
NaN
值:

In [16]:

df['d_steps'] = df.groupby('user_id').transform('diff')
df.fillna(0, inplace=True)
df
Out[16]:
   user_id  steps  d_steps
0     1015     48        0
1     1015     23      -25
2     1015     79       56
3     1016     10        0
4     1016     20       10

在这里,我们通过调用groupby对象生成所需的列,并传递一个字符串,该字符串映射到减去前一行值的方法。Transform应用一个函数并返回一个索引与df对齐的序列。

通常有助于给出一个具体的示例,其中包含输入和所需的输出,人们可以复制和粘贴,而不是依赖于描述。同意!我添加了一个示例:)