在excel 有A B两列
B列的 每一个数据 在A列进行搜索,找出 含有A列数据 对应的单元格的 行数
如 知道 B列的0003 在A列的 第4行和 第 15行 存在
A列 B列
0001 0001
0002 0002
0003 0003
0004 0004
0005 0005
0006 0006
0007 0007
0008 0008
0009 0009
0010 0010
0011 0011
0012 0012
0013 0013
0003
0004
0005
0007
0008
0008
0009
0011
0012
python示例:
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
# 选择工作表
worksheet = workbook.active
# 创建一个字典用于存储结果
result = {}
# 遍历 B 列的每个单元格,查找对应的行数
for cell in worksheet['B']:
value = cell.value
if value:
# 遍历 A 列的每个单元格
for row in worksheet['A']:
if row.value == value:
# 将对应的行号添加到字典中
result[cell.row] = row.row
# 输出结果
for b_row, a_row in result.items():
print(f'B 列第 {b_row} 行对应 A 列第 {a_row} 行')
import pandas as pd
#读取数据
df = pd.read_excel("data.xlsx")
#将B列的值存入list
listb = df["B"].tolist()
#用for循环遍历A列的值,比较两者的值,找出B列数据在A列中的位置,并将位置存入result数组中
result = []
for i in range(len(df["A"])):
if df["A"][i] in listb:
result.append(i)
print(result)
#将结果写入Excel文件
df2 = pd.DataFrame({"result": result})
writer = pd.ExcelWriter("data2.xlsx")
df2.to_excel(writer, index=False)
writer.save()
https://blog.csdn.net/zilongxuan008/article/details/112780344
该回答引用ChatGPT
import openpyxl
# 读取Excel文件
workbook = openpyxl.load_workbook("file.xlsx")
sheet = workbook["Sheet1"]
# 创建一个字典,保存B列的数据对应的行数
b_dict = {}
for i in range(1, sheet.max_row + 1):
b_value = sheet.cell(row=i, column=2).value
if b_value in b_dict:
b_dict[b_value].append(i)
else:
b_dict[b_value] = [i]
# 搜索A列的数据,并找出对应的行数
for i in range(1, sheet.max_row + 1):
a_value = sheet.cell(row=i, column=1).value
if a_value in b_dict:
print("A列数据:{},在B列对应的行数:{}".format(a_value, b_dict[a_value]))
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('xxx.xlsx')
# 遍历 B 列中的所有值
for b_value in df['B']:
# 获取所有 A 列中与 B 列当前值相等的行的索引
matching_rows = df.index[df['A'] == b_value].tolist()
# 输出匹配的行号
print(f"B列中的值 {b_value} 对应的行号:{matching_rows}")
有遇到问题,欢迎来交流。
根据要求设计了表格,名称为data,内容为:
程序为:
import pandas as pd
path1 = r'C:\Users\Desktop\data.xlsx'
df1 = pd.read_excel(path1, dtype={'A': str, 'B': str})
a = df1['A'].tolist()
lic = []
for data in df1['B']:
mask = [x == data for x in a]
lic = df1[mask].index.values
if len(lic) != 0:
print(f'B列的{data}出现在A列的第{lic + 1}行')
结果为
B列的0001出现在A列的第[1]行
B列的0002出现在A列的第[2]行
B列的0003出现在A列的第[3]行
B列的0004出现在A列的第[ 4 11]行
B列的0005出现在A列的第[ 5 12]行
B列的0006出现在A列的第[ 6 13]行
B列的0007出现在A列的第[ 7 14]行
B列的0008出现在A列的第[ 8 15]行
B列的0009出现在A列的第[9]行
B列的0010出现在A列的第[10]行
进程已结束,退出代码0
满足要求
如果问题得到解决请点 采纳~~
提供参考实例:Python DataFrame 根据列(column)值选择查找行(row)的方法及示例代码,链接:https://www.cjavapy.com/article/1375/
可以使用 Python 的 pandas 库读取 Excel 文件,并使用 loc 或 iloc 方法来查找对应数据。
例如,假设需要在 Excel 文件中找到 B 列中值为 x 的单元格所在行的 A 列数据,可以使用以下代码:
import pandas as pd
df = pd.read_excel('example.xlsx')
row = df.loc[df['B'] == 'x']
a_data = row['A'].values[0]
这里假设需要查找的 Excel 文件名为 example.xlsx,B 列的值为字符串 'x'。通过 loc 方法找到 B 列中值为 'x' 的行,然后获取该行的 A 列数据。
需要注意的是,如果 B 列中可能有多个单元格的值为 'x',那么上面的代码只会返回找到的第一行对应的 A 列数据。如果需要获取所有找到的行对应的 A 列数据,可以将 loc 方法改为 iloc 方法,使用整数索引获取行数据。例如:
python
rows = df.iloc[(df['B'] == 'x').values]
a_data_list = rows['A'].values.tolist()
用提供的测试数据,实现代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
df = pd.read_excel(r'C:\input.xlsx', dtype=str)
print("输入数据:\n", df)
list_a = [e for e in df['A列']]
list_b = [e for e in df['B列'] if str(e) != "nan"]
print(list_a)
print(list_b)
for b in list_b:
list_p = []
for i, a in enumerate(list_a):
if a == b:
list_p.append(i + 1)
print(f"B列的 {b} 在A列的 {list_p} 行存在")
打印输出结果如下:
输入数据:
A列 B列
0 0001 0001
1 0002 0002
2 0003 0003
3 0004 0004
4 0005 0005
5 0006 0006
6 0007 0007
7 0008 0008
8 0009 0009
9 0010 0010
10 0011 0011
11 0012 0012
12 0013 0013
13 0003 NaN
14 0004 NaN
15 0005 NaN
16 0007 NaN
17 0008 NaN
18 0008 NaN
19 0009 NaN
20 0011 NaN
21 0012 NaN
['0001', '0002', '0003', '0004', '0005', '0006', '0007', '0008', '0009', '0010', '0011', '0012', '0013', '0003', '0004', '0005', '0007', '0008', '0008', '0009', '0011', '0012']
['0001', '0002', '0003', '0004', '0005', '0006', '0007', '0008', '0009', '0010', '0011', '0012', '0013']
B列的 0001 在A列的 [1] 行存在
B列的 0002 在A列的 [2] 行存在
B列的 0003 在A列的 [3, 14] 行存在
B列的 0004 在A列的 [4, 15] 行存在
B列的 0005 在A列的 [5, 16] 行存在
B列的 0006 在A列的 [6] 行存在
B列的 0007 在A列的 [7, 17] 行存在
B列的 0008 在A列的 [8, 18, 19] 行存在
B列的 0009 在A列的 [9, 20] 行存在
B列的 0010 在A列的 [10] 行存在
B列的 0011 在A列的 [11, 21] 行存在
B列的 0012 在A列的 [12, 22] 行存在
B列的 0013 在A列的 [13] 行存在
Process finished with exit code 0
可以使用Python中的pandas库来实现。首先,需要读取Excel文件,然后使用pandas库的merge()函数将A列和B列进行合并,最后筛选出包含指定值的行即可。
具体代码如下:
import pandas as pd
# 读取Excel文件
df = pd.read_excel('your_excel_file.xlsx')
# 合并A列和B列
merged_df = pd.merge(df['A'], df['B'], left_index=True, right_index=True)
# 筛选出包含指定值的行
result_df = merged_df[merged_df['B'] == '0003']
# 打印结果
print(result_df)
在上面的代码中,'your_excel_file.xlsx'需要替换为你实际的Excel文件名。输出结果将会是一个包含指定值对应行的DataFrame。
貌似楼上的很多都可以。
import pandas as pd
#读取数据
df = pd.read_excel("data.xlsx")
#将B列的值存入list
listb = df["B"].tolist()
#用for循环遍历A列的值,比较两者的值,找出B列数据在A列中的位置,并将位置存入result数组中
result = []
for i in range(len(df["A"])):
if df["A"][i] in listb:
result.append(i)
print(result)
#将结果写入Excel文件
df2 = pd.DataFrame({"result": result})
writer = pd.ExcelWriter("data2.xlsx")
df2.to_excel(writer, index=False)
writer.save()