吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 483|回复: 45
收起左侧

[其他求助] excel表 数值计算求助

[复制链接]
Prozacs 发表于 2024-11-26 11:26
200吾爱币

需求是这样的, 比如 我取第一列A10 的值1000101 。然后去匹配第二列所有行的值,两个*之间是否存在,比如B10, B11,B12,B13等等都存在,B9的1000101 由于是不存在两个*中间。所以不算。那么最终我需要找出存在的哪一行*最多。统计出*的个数放在C列就行了,要把第一列的都统计完了。

附加一个测试文件:
链接: https://pan.baidu.com/s/1nEBvHpXMUrWXLJC-zaB8bQ 提取码: cfgu

最佳答案

查看完整内容

https://x.ws28.cn/f/fo7ezz4wue9 复制链接到浏览器打开 解压后,把你自己的“数据.xlsx”(必须是这个名字)放到这个文件夹中。 然后双击“start.bat”,运行脚本,等待完成即可,结束后会生成“数据-.xlsx”。 这个文件夹中其他文件不要动!!! 一共 249650 条数据。 我电脑的CPU是AMD 2600X,导入并处理耗时51秒,导出耗时47秒,合计98秒。 我另一台电脑的CPU是至强E5(老古董),导入并处理耗时100 ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

DetectiveConan 发表于 2024-11-26 11:26
Prozacs 发表于 2024-11-26 15:47
https://x.ws28.cn/f/fnvcgueqnz5 复制链接到浏览器打开

https://x.ws28.cn/f/fo7ezz4wue9 复制链接到浏览器打开


解压后,把你自己的“数据.xlsx”(必须是这个名字)放到这个文件夹中。

然后双击“start.bat”,运行脚本,等待完成即可,结束后会生成“数据-<时间戳>.xlsx”。

这个文件夹中其他文件不要动!!!




一共 249650 条数据。

我电脑的CPU是AMD 2600X,导入并处理耗时51秒,导出耗时47秒,合计98秒
我另一台电脑的CPU是至强E5(老古董),导入并处理耗时100秒,导出耗时80秒,合计180秒。
 楼主| Prozacs 发表于 2024-11-26 11:34
我需要计算方法。要计算的不止这么点,有20多万行数据
tantanxin147 发表于 2024-11-26 11:42
 楼主| Prozacs 发表于 2024-11-26 12:00
tantanxin147 发表于 2024-11-26 11:42
c列需要输出啥,最多*的行数和*的个数吗

输出最多*的行数的*的个数 比如A10 的值1000101  在B26里存在。切B26的*最多。是30个,那么c10 就是30  这个打个比方,具体多少看具体*有多少
tantanxin147 发表于 2024-11-26 12:44
Prozacs 发表于 2024-11-26 12:00
输出最多*的行数的*的个数 比如A10 的值1000101  在B26里存在。切B26的*最多。是30个,那么c10 就是30   ...

然后去匹配第二列所有行的值,两个*之间是否存在,就是开头结尾的数字排除在外是吗
jyjjf 发表于 2024-11-26 12:51
你的B18是不是有问题,尾巴与中间的值也不是连续递增的啊
jyjjf 发表于 2024-11-26 12:56
还有你的这个中间是什么意思,我没看明白,是数值之间,还是1000101只是表示一个符号而已,不是什么数值的概念,不参与比较大小,
只是这个1000101要处于B列字符串头尾之间就行?

lisongmei 发表于 2024-11-26 13:10
结果未验证,供参考

[Python] 纯文本查看 复制代码
import pandas as pd
from concurrent.futures import ThreadPoolExecutor
df=pd.read_excel('测试.xlsx')
def func(i):
	sr=f"\*{df['第一列'].iloc[i]}\*"
	print(sr)
	df_i=df['第二列'][df['第二列'].str.split(sr).map(lambda l:len(l))>=2]
	num=df_i.map(lambda s:len(s.split(r'*'))-1).max()
	return num

if __name__ == '__main__':
	p=ThreadPoolExecutor()
	rts=[]
	for res in p.map(func,range(len(df['第一列']))):
		rts.append(res)
	df['结果列']=rts
	df.to_excel('结果.xlsx')
Cr3ek 发表于 2024-11-26 13:15
所有列都找A10那个值吗? A11 1009501需要找吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-2-19 06:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表