morning323

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

今天在用pandas的df.columns.intersection函数合并两个数据帧的时候,发现有一列相同的列名的死活都没出现,后来修改列类型、列名去除空格、把列名转为str类型也不行。打印出来肉眼仔细看也没看出啥区别。一气之下直接在excel文件中公式让他们相等发现是False,放大一看,好家伙。一个是"优惠券抵减数",一个是"优惠劵抵减数",= =难顶,看来以后还是不能太相信肉眼,出现问题得一个个比对过才行。最后顺带回顾一下pandas的index1.intersection用法:

在 Pandas 里,intersection 并非独立的顶层函数,而是 Index 对象的一个方法,主要用于获取两个或多个索引对象的交集。下面会详细介绍它的用法,包含语法、参数、返回值、示例以及应用场景

参数说明
index1:这是一个 Index 对象,通常是 DataFrame 的列名索引(df.columns)或者行索引(df.index)。
other:这是必需参数,可以是另一个 Index 对象、列表、数组或者 DataFrame 的列名索引,用于和 index1 求交集。
sort:这是可选参数,类型为布尔值。在 Pandas 2.0 及以后的版本中,默认值是 False,即不排序;若设置为 True,则会对结果进行排序。
返回值
该方法会返回一个新的 Index 对象,其中包含了 index1 和 other 中共同的元素。

示例 1:两个 Index 对象求交集

点击查看代码
import pandas as pd

# 创建两个 Index 对象
index1 = pd.Index(['A', 'B', 'C', 'D'])
index2 = pd.Index(['B', 'D', 'E', 'F'])

# 求交集
common_index = index1.intersection(index2)
print("共同的索引元素:", common_index)
在这个示例中,index1 和 index2 共同的元素是 'B' 和 'D',所以 common_index 会返回一个包含这两个元素的 Index 对象。

示例 2:DataFrame 列名索引与列表求交集

点击查看代码
import pandas as pd

# 创建 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['a', 'b', 'c'],
    'C': [4, 5, 6]
})

# 定义一个列名列表
column_list = ['B', 'D', 'E']

# 求 DataFrame 列名索引与列表的交集
common_columns = df.columns.intersection(column_list)
print("共同的列名:", common_columns)
此示例中,df 的列名索引和 column_list 共同的元素是 'B',因此 common_columns 会返回一个只包含 'B' 的 Index 对象。

示例 3:使用 sort 参数

点击查看代码
import pandas as pd

# 创建两个 Index 对象
index1 = pd.Index(['C', 'A', 'B'])
index2 = pd.Index(['B', 'A', 'D'])

# 求交集并排序
common_index_sorted = index1.intersection(index2, sort=True)
print("排序后的共同索引元素:", common_index_sorted)

# 求交集不排序
common_index_unsorted = index1.intersection(index2, sort=False)
print("未排序的共同索引元素:", common_index_unsorted)
在这个示例中,通过设置 sort 参数为 True 和 False,可以看到排序和不排序的结果差异。 应用场景 数据合并:在合并多个 DataFrame 时,可先使用 intersection 方法找出共同的列名或者行索引,然后基于这些共同部分进行合并操作,避免合并过程中出现索引不一致的问题。 数据筛选:依据共同的索引筛选出需要的数据,用于后续的分析或处理。比如,你有多个数据源,只想分析它们共同包含的某些指标。 借助 intersection 方法,你能够方便地找出多个索引对象之间的共同元素,从而更好地进行数据处理和分析。
posted on 2025-03-29 17:16  morninggg  阅读(45)  评论(0)    收藏  举报