gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:35:15 25 4
gpt4 key购买 nike

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

      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'))

最佳答案

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

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)

关于python - 如何应用具有不同输入参数的相同函数在 pandas 数据框中创建新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59699910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com