在Pandas数据框中使用groupby时,如何根据上一行中的值增加一列?

阿曼达

我有以下数据框:

claim   diagnosis   sequence
100     1           1.0
100     2           1.0
100     3           NaN
100     4           NaN
105     1           1.0
105     2           2.0
105     3           2.0
105     4           NaN
111     1           1.0
111     2           2.0
111     3           3.0
111     4           NaN

我需要的是通过声明将所有NaN替换为上一行中的oneup值:

claim   diagnosis   sequence
100     1           1.0
100     2           1.0
100     3           2.0
100     4           3.0
105     1           1.0
105     2           2.0
105     3           2.0
105     4           3.0
111     1           1.0
111     2           2.0
111     3           3.0
111     4           4.0

我尝试了cumcount,但似乎无法使用以前的值。我也尝试过loc,但还不太熟悉。

things = [{'claim':100, 'diagnosis':1, 'sequence':1},
    {'claim':100, 'diagnosis':2, 'sequence':1 },
    {'claim':100, 'diagnosis':3, },
    {'claim':100, 'diagnosis':4, },
    {'claim':105, 'diagnosis':1, 'sequence':1},
    {'claim':105, 'diagnosis':2, 'sequence':2},
    {'claim':105, 'diagnosis':3,'sequence':2 },
    {'claim':105, 'diagnosis':4, },
    {'claim':111, 'diagnosis':1, 'sequence':1},
    {'claim':111, 'diagnosis':2, 'sequence':2},
    {'claim':111, 'diagnosis':3,  'sequence':3},
    {'claim':111, 'diagnosis':4, }]

df = pd.DataFrame(things)
df

我已经为此动了好几天,任何帮助都是很棒的。

BEN_YO

使用该行之前的cumsum计数数量NaN,然后加起来ffill

s1=df['sequence'].isnull().groupby(df['claim']).cumsum()
df['sequence']=s1+df.groupby('claim')['sequence'].ffill()
df
Out[145]: 
    claim  diagnosis  sequence
0     100          1       1.0
1     100          2       1.0
2     100          3       2.0
3     100          4       3.0
4     105          1       1.0
5     105          2       2.0
6     105          3       2.0
7     105          4       3.0
8     111          1       1.0
9     111          2       2.0
10    111          3       3.0
11    111          4       4.0

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据上一行的值选择特定的行(在同一列中)

如何获取数据框中每一行的每一列的值和类型?

在数据框的一列的每一行中使用拆分功能

根据同一行和后一行的另一列中的值创建一个数据框列

根据上一行同一列中的值计算值

根据一列中的值获取数据帧组的第一行和最后一行

R-如何根据第一行中的值合并数据框中的列

如何从pandas数据框中获取同一行(上一列)的上一个值?

如何检查r中数据框中的一列值是否对应于数据框中每一行的另一列?

如何为熊猫数据框中的另一列中的特定值更新一行中的列值?

Pandas数据框:根据另一列中的值操纵列(无需遍历行)

如何将Pandas DataFrame中的值与上一行和上一列中的值进行比较?

访问每一行并检查数据框中的每一列值

创建一列,根据另一行中的事件将值分配给数据框中的一行

R将数据框中的每一列除以最后一行的值

根据另一列中的值对pandas数据框中的列进行归一化

如何使数据框中的每一行的每一列都有一个值?

如何使用pandas根据同一行另一列中存在的数据修改一列的数据

如何根据另一行更新数据框中列的值?

Pandas 数据框如何根据特定组和上一行值为列赋值

如何使用R中的geom_bar仅着色(填充)不同颜色的一列(数据框中的值属于一行)?

如何使用两行中的值在 Pandas 数据框中创建一列?

如何根据 Pandas 数据框中前一行的行值创建新列?

根据另一列中的值选择列的值,然后在熊猫数据框中的每一行应用该值

Pandas groupby 根据另一列中的值(0 或 1)选择最后一行或倒数第二行

如何根据 Pandas 数据框中另一列的条件将值填充到新列中?

根据一列的连续值获取数据框的行

迭代数据框并根据一列的值在具有前一行值的新列中执行操作

根据另一行中的 100 个值是否小于 x 在 pandas 数据框中添加一列