python - 如何优化 pandas 中的数据帧迭代?

标签 python pandas dataframe

我需要迭代一个数据框,对于每一行,我需要根据两个现有列创建一个 ID:姓名和性别。最终我将这个新列添加到 df 中。

df = pd.read_csv(file, sep='\t', dtype=str, na_values="", low_memory=False)
   row_ids = []
   for index, row in df.iterrows():
       if (index % 1000) == 0:
          print("Row node index: {}".format(str(index)))
     
     caculated_id = get_id(row['name', row['sex']])
     row_ids.append(caculated_id)

   df['id'] = row_ids

有没有一种方法可以使其更快而不需要逐行进行?

根据建议的解决方案添加更多信息:

最佳答案

使用apply代替:

def func(x):
    if (x.name % 1000) == 0:
        print("Row node index: {}".format(str(x.name)))
 
    caculated_id = get_id(row['name', row['sex']])
    return caculated_id

df['id'] = df.apply(func, axis=1)

关于python - 如何优化 pandas 中的数据帧迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69430194/

相关文章:

java - 请帮助我理解 Protocol Buffer

python - 如何使用 Python 2.7 线程安全和 webapp2 让 Appstats 工作?

python - 我们如何将整列的内容拆分为同一个表中的单独列?

python - 减去数据框中的两列

r-将sf::st_within的输出转换为矢量

Python:通过for循环更改列表

python - 如何在 pandas 中创建动态 bin

python - 我有一个返回系列的函数。我希望将此函数作为新列应用于另一个数据框

python - 将 Python 字典打印为并排多列的 Pandas value_counts

python - 如何在 Pandas 约会后 8 天内获得 1,否则如何获得 0?