Python Pandas 数据处理:计算DataFrame两列组合的环比
Python Pandas 数据处理:计算DataFrame两列组合的环比
本文将介绍如何使用 Python Pandas 处理两个 DataFrame,通过组合其中两列的值进行匹配,并计算特定列的环比。
问题背景:
假设我们有两个 DataFrame,df1 和 df2,分别包含了不同地区(地市和区县)的申告量数据。我们需要计算 df1 中每个地区相较于 df2 中对应地区的申告量环比。
**解决方案:**pythonimport 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): 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), axis=1)
print(df1)
代码解释:
- 创建示例数据: 首先,我们创建了两个示例 DataFrame:df1 和 df2,分别包含了'地市'、'区县'和'申告量'以及'地市1'、'区县2'和'申告量2'三列数据。2. 定义判断函数
calculate_ratio: - 该函数接收 DataFrame 的一行数据作为输入。 - 将'地市'和'区县'两列使用 '-' 连接,组合成一个字符串city_county,代表唯一的地区标识。 - 使用any函数和条件判断,查找 df2 中是否存在相同的地区标识。 - 如果存在,则获取对应行的索引,并计算 df1 中该地区的'申告量'与 df2 中对应地区的'申告量2'的比值,即环比。 - 如果不存在,则返回 None。3. 应用函数计算环比: - 使用apply函数和lambda表达式,将calculate_ratio函数应用于 df1 的每一行数据。 -axis=1参数指定按行应用函数。 - 将计算得到的环比值存储到 df1 的新列'环比'中。
输出结果:
最终,我们将得到一个包含新列'环比'的 DataFrame,其中包含了 df1 中每个地区相较于 df2 中对应地区的申告量环比。
总结:
本文介绍了如何使用 Python Pandas 组合 DataFrame 的两列,并根据组合值匹配另一个 DataFrame,计算特定列的环比。 这只是一个简单的示例,您可以根据实际需求修改代码以适应更复杂的场景。
原文地址: https://www.cveoy.top/t/topic/bVSU 著作权归作者所有。请勿转载和采集!