根据条件,熊猫更改组的第一个值

Tingiskhan

假设我有以下数据集

table = [[datetime.datetime(2015, 3, 31), 1, 0.5, 1],
         [datetime.datetime(2015, 6, 30), 1, 0.5, 0.5],
         [datetime.datetime(2015, 9, 30), 1, 0.5, 0.5],
         [datetime.datetime(2015, 12, 31), 1, 2, 0.5],
         [datetime.datetime(2015, 3, 31), 2, 0.5, 1.5],
         [datetime.datetime(2015, 6, 30), 2, 0.5, 0.5],
         [datetime.datetime(2015, 9, 30), 2, 0.5, 0.5],
         [datetime.datetime(2015, 12, 31), 2, 2, 0.5]]

df = pd.DataFrame(table, columns=['Date', 'Id', 'Value', 'Old'])

如果of的元素小于in的元素,是否可以将of第一个元素更改为Value对应的元素它需要由每个小组(基于来完成因此,我的新桌子看起来像OldValueOldId

        Date  Id  Value  Old
0 2015-03-31   1    1.0  1.0
1 2015-06-30   1    0.5  0.5
2 2015-09-30   1    0.5  0.5
3 2015-12-31   1    2.0  0.5
4 2015-03-31   2    1.5  1.5
5 2015-06-30   2    0.5  0.5
6 2015-09-30   2    0.5  0.5
7 2015-12-31   2    2.0  0.5

谢谢,廷吉斯

Jianxun Li

由于您只想更改每个组的第一个元素,因此可以执行自定义的groupby apply功能。

import pandas as pd
import datetime

# your data
# =================================================
table = [[datetime.datetime(2015, 3, 31), 1, 0.5, 1],
         [datetime.datetime(2015, 6, 30), 1, 0.5, 0.5],
         [datetime.datetime(2015, 9, 30), 1, 0.5, 0.5],
         [datetime.datetime(2015, 12, 31), 1, 2, 0.5],
         [datetime.datetime(2015, 3, 31), 2, 0.5, 1.5],
         [datetime.datetime(2015, 6, 30), 2, 0.5, 0.5],
         [datetime.datetime(2015, 9, 30), 2, 0.5, 0.5],
         [datetime.datetime(2015, 12, 31), 2, 2, 0.5]]

df = pd.DataFrame(table, columns=['Date', 'Id', 'Value', 'Old'])

print(df)


        Date  Id  Value  Old
0 2015-03-31   1    0.5  1.0
1 2015-06-30   1    0.5  0.5
2 2015-09-30   1    0.5  0.5
3 2015-12-31   1    2.0  0.5
4 2015-03-31   2    0.5  1.5
5 2015-06-30   2    0.5  0.5
6 2015-09-30   2    0.5  0.5
7 2015-12-31   2    2.0  0.5

# processing
# ====================================
def func(group):
    if group.Value.values[0] < group.Old.values[0]:
        group.Value.values[0] = group.Old.values[0]
    return group

df.groupby('Id').apply(func)

        Date  Id  Value  Old
0 2015-03-31   1    1.0  1.0
1 2015-06-30   1    0.5  0.5
2 2015-09-30   1    0.5  0.5
3 2015-12-31   1    2.0  0.5
4 2015-03-31   2    1.5  1.5
5 2015-06-30   2    0.5  0.5
6 2015-09-30   2    0.5  0.5
7 2015-12-31   2    2.0  0.5

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按第一个值对组进行排序而不更改组顺序

更改组件 0 时重置 UIPickerView 的第一个组件的值

根据组汇总更改组的最后一个值

熊猫根据现有列的第一个唯一值创建新列

根据每n行第一个出现的熊猫修改列值

根据组中第一个值的条件替换 df 中的后续值

根据条件更改列中的第一个数字

熊猫每日分组,条件基于第一个较高的值

根据条件识别具有行中第一个值的列

Python熊猫:获取组的第一个值

熊猫:计算第一个连续的True值

根据条件从第一个df到另一个df的列值

如何更改满足特定条件的数据框中的第一个值

熊猫如何根据最后一个元素的条件保留值或更改列的值

根据第一个选择获取选项值

熊猫根据条件在多个列中找到第一个非零条目

熊猫根据另一列将nan替换为第一个非nan值

根据数据帧R上成功第一个值的条件替换第二个值

根据熊猫中的第一个和最后一个逗号分隔列

使用条件获取第一个值

查找与条件不同的第一个前提值

熊猫数据框根据另一个字段的条件更改值

传递列表中更改的第一个值

在更改下拉列表中根据第一个下拉列表更改其相对下拉值

熊猫:在一定条件下更改组的值

熊猫将组分为第一个值和最后一个值

在满足熊猫数据帧中条件的数据帧位置处返回第一个值的位置

如何在Linux中根据该文件的第一个值的条件对输出文件进行排序?

根据行的第一个单元格的值对excel行进行条件格式化