Python Pandas: 如何将 DataFrame 作为参数传递给函数
如果要将 df2 作为参数传递给 calculate_ratio 函数,可以在函数定义时添加一个参数来接收 df2,并在调用函数时将 df2 传递给该参数。以下是修改后的示例代码:
import pandas as pd
# 创建示例数据
data1 = {
'地市': ['北京', '上海', '上海', '北京', '广州'],
'区县': ['海淀', '浦东', '徐汇', '浦东', '番禺'],
'申告量': [100, 200, 300, 400, 500]
}
df1 = pd.DataFrame(data1)
data2 = {
'地市1': ['上海', '北京', '北京', '上海', '广州'],
'区县2': ['浦东', '海淀', '徐汇', '徐汇', '番禺'],
'申告量2': [50, 100, 200, 300, 400]
}
df2 = pd.DataFrame(data2)
# 定义判断函数
def calculate_ratio(row, df2):
city_county = row['地市'] + '-' + row['区县']
if any((df2['地市1'] + '-' + df2['区县2']) == city_county):
index = df2[(df2['地市1'] + '-' + df2['区县2']) == city_county].index[0]
ratio = row['申告量'] / df2.loc[index, '申告量2']
return ratio
else:
return None
# 判断每个区县是否存在于另外一个DataFrame中,并计算环比
df1['环比'] = df1.apply(lambda row: calculate_ratio(row, df2), axis=1)
print(df1)
在修改后的代码中,我们在 calculate_ratio 函数的定义中添加了一个额外的参数 df2,用于接收传递给函数的 df2 数据。
在调用 calculate_ratio 函数时,我们通过传递 df2 参数将 df2 数据传递给 calculate_ratio 函数。
在 apply 函数中,我们将 calculate_ratio 函数作为 lambda 表达式的参数,并通过在 lambda 表达式中传递 df2 参数,将 df2 数据传递给 calculate_ratio 函数。
这样,calculate_ratio 函数就可以在函数内部访问到传递进来的 df2 数据。
最后,我们将计算得到的结果存储在 df1 的新列'环比'中,并打印输出包含了新列'环比'的 DataFrame。
这种将 df2 作为参数传递给函数的方式,适用于 calculate_ratio 函数需要修改 df2 的数据,或者需要在多个函数之间共享数据的情况。
原文地址: https://www.cveoy.top/t/topic/bZN4 著作权归作者所有。请勿转载和采集!