如何在不同的输入参数中应用相同的函数在pandas数据框中创建新列?

星状

所以我有这个示例数据框:

      x_mean    x_min    x_max     y_mean     y_min     y_max
 1      85.6        3      264       75.7         3       240
 2     105.5        6      243       76.4         3       191
 3      95.8       19      287       48.4         8       134
 4      85.5       50      166       64.8        32       103
 5      55.9       24      117       46.7        19        77 


x_range = [list(range(0,50)),list(range(51,100)),list(range(101,250)),list(range(251,350)),list(range(351,430)),list(range(431,1000))]
y_range = [list(range(0,30)),list(range(31,60)),list(range(61,90)),list(range(91,120)),list(range(121,250)),list(range(251,2000))]


#here x = Any column with mean value (eg. x_mean or y_mean)
# y = x_range / y_range 

def min_max_range(x,y):
for a in y:
    if int(x) in a:
        min_val = min(a)
        max_val = max(a)+1
        return max_val - min_val

def min_range(x,y):
for a in y:
    if int(x) in a:
        min_val = min(a)
        return min_val

现在我想将这些功能min_max_range()min_range()x_mean, y_mean获得新列。

就像函数min_max_val使用列x_mean和范围x_range作为创建列的输入一样x_min_max_val,类似地,列y_mean和范围y_range也用于列y_min_max_val

我可以使用这些衬管一个接一个地创建每个列,但是我想x_mean & y_mean一次用一个衬管将其应用于两个列

df['x_min_max_val'] = df['x_mean'].apply(lambda x: min_max_range(x,x_range))
df['y_min_max_val'] = df['y_mean'].apply(lambda x: min_max_range(x,y_range))  

结果数据帧应如下所示:

      x_mean    x_min    x_max     y_mean     y_min     y_max    x_min_max_val   y_min_max_val        x_min_val   y_min_val
1      85.6        3      264       75.7         3       240                49              29               51          61
2     105.5        6      243       76.4         3       191               149              29              101          91
3      95.8       19      287       48.4         8       134                49              29               51          91
4      85.5       50      166       64.8        32       103                49              29               51          61
5      55.9       24      117       46.7        19        77                49              29               51          31

我想一次创建这些列,而不是一次创建一列。我怎样才能做到这一点?有什么建议?或类似的东西可以工作?

df.filter(regex='mean').apply(lambda x: min_max_range(x,x+'_range'))
BICube

这是您需要遵循的概念才能实现这一目标。首先,您需要将范围存储在字典中,以允许通过名称访问它们。

range_dict = {}
range_dict['x_range'] = x_range
range_dict['y_range'] = y_range

另外,您需要在列表中具有进行计算所需的列(或者,如果它们具有特定的模式,则可以使用正则表达式来获取它们)

mean_cols_list = ['x_mean', 'y_mean']

现在,要将函数应用于所有列,您需要定义一个这样的函数

def min_max_calculator(df, range_dictionary, mean_columns_list):
    for i in range(len(mean_cols_list)):
        # this returns 'x_mean'
        current_column = mean_cols_list[i]
        # this returns 'x_min_max_value'
        output_col_name = current_column.replace('mean','min_max_value')
        # this returns 'x_range'
        range_name = current_column.replace('mean','range')
        # this returns the list of ranges for x_range
        range_list = range_dict[range_name]
        # This add the calculated column to the dataframe
        df[output_col_name] = df[current_column].apply(lambda x: min_max_range(x,range_list))
    return(df)

df_output = min_max_calculator(df, range_dict, mean_cols_list)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在组中查找NA并为数据框创建新列

来自分类Dev

在pandas数据框中创建新列,作为另一列的函数

来自分类Dev

如何从不同列的行中在数据框中创建新列?

来自分类Dev

str。包含在pandas数据框中创建新列

来自分类Dev

如何将函数应用于pandas数据框中的列中的每个值?

来自分类Dev

如何在熊猫数据框中的每列中包含NaN计数的列上应用函数?

来自分类Dev

如何在Pandas数据框中的其他列中填充基于新列的值

来自分类Dev

如何在两个不同列表中包含的基于数据框的值中创建新列?

来自分类Dev

R:如何在数据框中创建一个新列,从基数上计算观察值对变量具有相同值的次数

来自分类Dev

如何在使用lambda的计算函数中输入变化的列数并应用于熊猫的数据框中?

来自分类Dev

如何在数据框中按行应用函数以在r中生成新的或扩展的数据框

来自分类Dev

创建函数以重命名Pandas数据框中的列

来自分类Dev

如何加快熊猫应用功能在数据框中创建新列?

来自分类Dev

根据不同条件在Pandas数据框中创建一个新列

来自分类Dev

如何从Pandas数据框中的现有列创建新列

来自分类Dev

如何仅通过列表理解在pandas数据框中创建新列?

来自分类Dev

从Pandas数据框中的其他列创建新列

来自分类Dev

如何在熊猫数据框中创建新列

来自分类Dev

如何基于两个不同数据框中的匹配值创建新列?

来自分类Dev

如何汇总日内时间戳并在pandas数据框Python中创建新列

来自分类Dev

在pandas数据框中填充新列,该数据框从其他列获取输入

来自分类Dev

应用列范围函数时,如何从数据框中的不同列中获取某些值?

来自分类Dev

如何使用 purrr 根据数据框中的参数应用函数

来自分类Dev

基于 if/elif/and 函数在 Pandas 数据框中创建新列

来自分类Dev

如何在 R 中的空数据框中创建新列

来自分类Dev

使用 *args 编写函数在 Pandas 数据框中创建一个新列

来自分类Dev

如何处理 Pandas 中的 2 列并使用新列名创建新数据框

来自分类Dev

如何在pandas数据框中创建列层次索引

来自分类Dev

在不同的数据框中创建相同的变量

Related 相关文章

  1. 1

    如何在组中查找NA并为数据框创建新列

  2. 2

    在pandas数据框中创建新列,作为另一列的函数

  3. 3

    如何从不同列的行中在数据框中创建新列?

  4. 4

    str。包含在pandas数据框中创建新列

  5. 5

    如何将函数应用于pandas数据框中的列中的每个值?

  6. 6

    如何在熊猫数据框中的每列中包含NaN计数的列上应用函数?

  7. 7

    如何在Pandas数据框中的其他列中填充基于新列的值

  8. 8

    如何在两个不同列表中包含的基于数据框的值中创建新列?

  9. 9

    R:如何在数据框中创建一个新列,从基数上计算观察值对变量具有相同值的次数

  10. 10

    如何在使用lambda的计算函数中输入变化的列数并应用于熊猫的数据框中?

  11. 11

    如何在数据框中按行应用函数以在r中生成新的或扩展的数据框

  12. 12

    创建函数以重命名Pandas数据框中的列

  13. 13

    如何加快熊猫应用功能在数据框中创建新列?

  14. 14

    根据不同条件在Pandas数据框中创建一个新列

  15. 15

    如何从Pandas数据框中的现有列创建新列

  16. 16

    如何仅通过列表理解在pandas数据框中创建新列?

  17. 17

    从Pandas数据框中的其他列创建新列

  18. 18

    如何在熊猫数据框中创建新列

  19. 19

    如何基于两个不同数据框中的匹配值创建新列?

  20. 20

    如何汇总日内时间戳并在pandas数据框Python中创建新列

  21. 21

    在pandas数据框中填充新列,该数据框从其他列获取输入

  22. 22

    应用列范围函数时,如何从数据框中的不同列中获取某些值?

  23. 23

    如何使用 purrr 根据数据框中的参数应用函数

  24. 24

    基于 if/elif/and 函数在 Pandas 数据框中创建新列

  25. 25

    如何在 R 中的空数据框中创建新列

  26. 26

    使用 *args 编写函数在 Pandas 数据框中创建一个新列

  27. 27

    如何处理 Pandas 中的 2 列并使用新列名创建新数据框

  28. 28

    如何在pandas数据框中创建列层次索引

  29. 29

    在不同的数据框中创建相同的变量

热门标签

归档