我有两个从FTP文件夹中提取文件的列表:
sFiles = ftp.nlst(date+'sales.csv')
oFiles = ftp.nlst(date+'orders.csv')
结果显示两个列表如下所示:
^{pr2}$用我的真实数据集,像。。。在
for sales, orders in zip(sorted(sFiles),sorted(oFiles)):
df = pd.concat(...)
获取所需的结果,但有时会出现问题,两个文件都无法放入正确的FTP文件夹中,因此我需要一些代码来创建一个iterable对象,以便根据日期提取匹配的订单和销售文件名。在
下面的工作。。。我不知道我会给它多少“Python”分数。可读性很差,但这是一种理解能力,所以我认为性能会有所提高?在
[(sales, orders) for sales in sFiles for orders in oFiles if re.search(r'\d+',sales).group(0) == re.search(r'\d+',orders).group(0)]
你可以使用字典:
现在,您的数据是按以下格式构造的:
{"date":{"sales":"sales filename", "orders":"orders filename"}}
输出:
^{pr2}$编辑:
通过字典理解和构建您建议的列表理解解决方案,您可以尝试以下操作:
输出:
仅仅因为理解的存在并不意味着你应该把它们用于所有事情。这很好:
有可能让它更快吗?对。但你不必因为你能做到而强迫它去理解列表。有时编写更多的代码会更好,因为它会将复杂性分散一点。在
下面是一个渐进的改进,使算法O(n):
^{pr2}$利用熊猫数据帧的索引:
因此:
^{pr2}$相关问题 更多 >
编程相关推荐