【发布时间】:2021-12-24 20:56:14
【问题描述】:
我正在处理大型数据帧,并注意到使用df.iterrows() 遍历每个数据帧需要很长时间。目前,我遍历数据帧的行,提取数据帧中某些行的值并将它们乘以一些预定义的权重。然后我创建一个置信水平,如果它大于某个阈值,我将索引添加到列表indices。这是我的意思的一个简单示例:
import pandas as pd
attributes = ['attr1', 'attr2', 'attr3']
d = {'attr1': [1, 2], 'attr2': [3, 4], 'attr3' : [5, 6], 'meta': ['foo', 'bar']}
df = pd.DataFrame(data=d)
indices = []
threshold = 0.5
for index, row in df.iterrows():
weights = [0.3 , 0.3, 0.4]
results = []
for attr in attributes:
if attr == 'attr1':
results.append(row[attr] * 5)
else:
results.append(row[attr])
confidence_level = sum(list(map(lambda x, y: x * y, results, weights))) / len(results)
if confidence_level >= threshold:
indices.append(index)
我的问题是,是否有办法摆脱第一个循环,同时仍跟踪数据框中的索引?如果可能,内部循环应该保持原样,因为它包含一个条件。
【问题讨论】:
标签: python pandas dataframe iteration