今天在用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)
示例 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)
示例 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)