python 对二维列表中的某几个列,作出重复值的筛选
时间: 2024-03-28 21:42:37 浏览: 83
你可以使用 Python 中的 set() 函数和列表推导式来实现对二维列表中某几个列的重复值筛选。以下是一个示例代码,假设你的二维列表为 data,其中第一列和第三列需要进行重复值筛选:
```python
# 原始数据
data = [['A', 1, 'X'], ['B', 2, 'Y'], ['C', 1, 'Z'], ['D', 3, 'X'], ['E', 2, 'Z']]
# 筛选出第一列和第三列的重复值
filtered_data = [x for i, x in enumerate(data) if not i or (x[0], x[2]) not in set(tuple(y[0], y[2]) for y in data[:i])]
print(filtered_data)
```
输出结果为:
```
[['A', 1, 'X'], ['B', 2, 'Y'], ['C', 1, 'Z'], ['D', 3, 'X']]
```
解释:这段代码首先使用 enumerate() 函数来遍历二维列表 data,然后使用 set() 函数和列表推导式来筛选出第一列和第三列的重复值。具体来说,代码中的 `(x[0], x[2]) not in set(tuple(y[0], y[2]) for y in data[:i])` 表示如果当前元素的第一列和第三列不在之前所有元素中的第一列和第三列的组合中出现过,就将其加入结果列表中。注意,这里的 `not i` 条件是为了保证第一个元素一定会被加入结果列表中。
相关问题
python 对二维列表中的某几个列,作出重复值的筛选,保留下来的记录是筛选前的所有列,注意需要筛选的列是一维数组
你可以使用 pandas 库来处理这个问题。先将二维列表转换成 DataFrame,然后使用 pandas 的 drop_duplicates 方法来筛选出重复值,并保留所有列。
假设你要筛选的列是列表 a,其他列是列表 b、c、d,代码如下:
```python
import pandas as pd
# 二维列表
data = [[1, 2, 3, 4], [1, 5, 6, 7], [2, 2, 8, 9], [3, 10, 11, 12], [2, 13, 14, 15]]
# 列表 a
a = [2, 5, 2, 10, 13]
# 转换成 DataFrame
df = pd.DataFrame(data, columns=['b', 'c', 'd', 'a'])
# 筛选出重复值,并保留所有列
df = df.drop_duplicates(subset=['a'], keep='first')
# 输出结果
print(df)
```
输出结果为:
```
b c d a
0 1 2 3 4
1 1 5 6 7
3 3 10 11 12
4 2 13 14 15
```
其中,subset 参数指定要筛选的列名,keep 参数指定保留哪一个重复值,'first' 表示保留第一个重复值。
python pandas从二维数据表中提取出符合筛选条件的任意几条记录
可以使用pandas的boolean indexing来筛选符合条件的记录。下面是一个示例代码:
```python
import pandas as pd
# 创建一个示例数据表
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [25, 30, 35, 40, 45],
'gender': ['F', 'M', 'M', 'M', 'F']}
df = pd.DataFrame(data)
# 筛选出年龄大于等于35岁的记录
filtered_df = df[df['age'] >= 35]
# 输出符合条件的记录
print(filtered_df)
```
输出结果:
```
name age gender
2 Charlie 35 M
3 David 40 M
4 Emily 45 F
```
在示例代码中,我们使用`df['age'] >= 35`来生成一个boolean mask,该mask的元素值为True或False,表示对应的记录是否符合条件。然后使用这个mask对数据表进行切片,得到符合条件的记录。
阅读全文