【发布时间】:2023-02-08 03:19:34
【问题描述】:
我有一种方法可以从 MySQL 表中提取信息并将其传递给数据框。然后我逐列检查 DF 中的所有项目,看它们是否包含前缀,如果包含,则对其进行解密。知道如何尽可能快地运行它吗?
我可以看出这是一种非常低效的处理方式,但对于超过 400,000 行的大表来说,这已成为一个问题。它有第二次检查,因为一些数据被解密了两次,我想可能有一种更优雅的递归方式来执行此操作......
for i in df.index:
for c in df.columns:
if type(df.loc[i, c]) == str:
if "Crypt#" in df.loc[i, c]:
df.loc[i, c] = decrypt_data(df.loc[i, c])
if "Crypt#" in df.loc[i, c]:
df.loc[i, c] = decrypt_data(df.loc[i, c])
return df
【问题讨论】:
-
你能给我们更多关于你的 df 的信息,它是如何以及你想要的输出吗?
-
嗨 Emanuele,在这种情况下,DF 是一系列交易。许多不同类型的列都被加密了,但表之间并不一致,这就是为什么我们要检查列中的数据是否包含加密前缀。输出应该完全相同,除了包含解密数据的列被解密。
-
@atomey 各种列的数据类型是什么?列的格式/结构是否正确(如果列中有任何
str,则整个列都是str)?或者在给定的列/行中,您是否混合了不同的数据类型? -
如果数据是混合的,第一步应该是通过(一些已知的标记?)过滤它,以便它是格式/结构良好的
-
您能否提供
decrypt_data功能的操作细节?还是(就 StackOverflow 而言)是一个“黑匣子”功能?