python 对二维列表中的某几个列,作出重复值的筛选
时间: 2024-03-28 07:42:39 浏览: 48
可以使用 set 和列表推导式来实现重复值的筛选。
假设有一个二维列表 data,其中有三列需要进行重复值筛选,可以使用以下代码:
```python
# 选择需要进行重复值筛选的列
selected_cols = [0, 2, 4]
# 对每一列进行重复值筛选
result = []
for row in data:
# 将需要筛选的列的值放入一个元组中
values = tuple(row[i] for i in selected_cols)
# 如果这个元组没有出现过,则将这个元组加入结果列表中,并将这个元组加入 set 中
if values not in result:
result.append(values)
# 将结果列表中的元组转换回列表形式
result = [list(values) for values in result]
```
其中,`selected_cols` 表示需要进行重复值筛选的列的索引,`result` 存储没有重复值的数据。在遍历数据时,对于每一行,我们将需要筛选的列的值放入一个元组中,然后判断这个元组是否出现过,如果没有出现过,就将这个元组加入结果列表中,并将这个元组加入 set 中。最后将结果列表中的元组转换回列表形式即可。
相关问题
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对数据表进行切片,得到符合条件的记录。
阅读全文