【问题标题】:How to apply function to dataframe based on row value如何根据行值将函数应用于数据框
【发布时间】:2022-01-15 19:26:49
【问题描述】:

考虑下表:

Value1     Value2
1          1    
1          2
1          3
2          7
2          8    
2          9
...        ...
100        1
100        2
100        3

Value1 列包含数字 1 到 100 的三元组。Value2 列包含随机数。我想知道如何为每组三元组应用一个函数并将它们的结果附加在一起。

例如,考虑一个名为“Interpolate”的示例函数,它将每组三元组线性插入五行,仅影响 Value2 列。结果是:

Value1     Value2
1          1    
1          1.5
1          2
1          2.5
1          3    
2          7
2          7.5
2          8
2          8.5
2          9
...        ...

【问题讨论】:

  • 嗨,您尝试将其作为代码是什么?这样你就可以帮助这里的人更好地帮助你。就目前而言,您似乎在让其他人完成所有工作,这有点粗鲁,对吧?

标签: python python-3.x pandas dataframe


【解决方案1】:

您可以groupby“Value1”并为每个组应用一个函数:

def interpolate(x):
    # change index to even numbers
    x.index = range(0, 2*len(x), 2)
    # add NaN rows for odd indices
    x = x.reindex(range(2*len(x)-1))
    # interpolate
    x = x.interpolate()
    return x

out = df.groupby('Value1').apply(interpolate).droplevel(0)

以上代码为单行代码:

out = df.groupby('Value1').apply(lambda x: x.set_axis(range(0, 2*len(x), 2)).reindex(range(2*len(x)-1))).interpolate().droplevel(0)

输出:

   Value1  Value2
0     1.0     1.0
1     1.0     1.5
2     1.0     2.0
3     1.0     2.5
4     1.0     3.0
0     2.0     7.0
1     2.0     7.5
2     2.0     8.0
3     2.0     8.5
4     2.0     9.0
0   100.0     1.0
1   100.0     1.5
2   100.0     2.0
3   100.0     2.5
4   100.0     3.0

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多