如何根据基于行的计算将新列附加到我的 Pandas DataFrame?
How to append a new column to my Pandas DataFrame based on a row-based calculation?
假设我有一个包含两列的 Pandas DataFrame:1) user_id, 2) 步数(其中包含给定日期的步数)。现在我想计算步数与之前测量中的步数之间的差异(保证测量在我的 DataFrame 中按顺序排列)。
所以基本上这归结为向我的 DataFrame 添加一个额外的列,其中此数据框的行值与同一行中 'steps' 列的值相匹配,减去 [=25] 的值=] 上一行中的列(如果这是第一行,则为 0)。更复杂的是,我想计算每个 user_id 的这些差异,所以我想确保我不会减去具有不同 user_id 的两行的步长值。
有谁知道如何使用 Python 2.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 不在您的原始数据中,但以下是您想要的,您必须 replace/fill NaN
值为 0:
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
在这里,我们通过调用减去前一行值的 transform
on the groupby by object and pass a string which maps to the diff
方法生成所需的列。 Transform 应用一个函数和 returns 一个索引与 df 对齐的序列。
假设我有一个包含两列的 Pandas DataFrame:1) user_id, 2) 步数(其中包含给定日期的步数)。现在我想计算步数与之前测量中的步数之间的差异(保证测量在我的 DataFrame 中按顺序排列)。
所以基本上这归结为向我的 DataFrame 添加一个额外的列,其中此数据框的行值与同一行中 'steps' 列的值相匹配,减去 [=25] 的值=] 上一行中的列(如果这是第一行,则为 0)。更复杂的是,我想计算每个 user_id 的这些差异,所以我想确保我不会减去具有不同 user_id 的两行的步长值。
有谁知道如何使用 Python 2.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 不在您的原始数据中,但以下是您想要的,您必须 replace/fill NaN
值为 0:
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
在这里,我们通过调用减去前一行值的 transform
on the groupby by object and pass a string which maps to the diff
方法生成所需的列。 Transform 应用一个函数和 returns 一个索引与 df 对齐的序列。