【问题标题】:How to speed up list appending from dataframe.loc operation如何加快从 dataframe.loc 操作追加列表的速度
【发布时间】:2021-11-19 05:19:35
【问题描述】:

我正在尝试获取每个唯一组件名称的第一次出现的索引,然后将索引附加到列表中。

我有大约 20k 行的数据框。

 mylist=[]

 for i in df['name']:
        mylist.append(df.loc[df.name==i].index[0])
 mylist=set(mylist)

如何加快上述过程?从数据框追加到列表大约需要一分钟。

【问题讨论】:

  • Elgün,请添加您的df的截图
  • 请改进您的问题,以便我们重现您的问题。如何创建minimal reproducible example 谢谢@YasharAhmadov:截图只是第二好的解决方案,文本/代码会更好
  • 请在此处解释您要实现的目标。如果您只是提取按名称分组的第一级索引,它看起来很像 - 这应该是 pandas 中的单行
  • 我正在尝试获取数据框中每个唯一名称的首次出现索引

标签: python list dataframe optimization


【解决方案1】:

没有数据示例无法测试,但这里是:

df.reset_index().groupby('name').first()['index'].to_list()

一个最小的可重现示例如下所示:

pd.DataFrame({'name': ['ABBA', 'LZ', 'LZ', 'LZ', 'IronMaiden', 'PinkFloyd', 'LZ', 'PinkFloyd']})

数据帧:

         name
0        ABBA
1          LZ
2          LZ
3          LZ
4  IronMaiden
5   PinkFloyd
6          LZ
7   PinkFloyd

期望的结果:

[0, 1, 4, 5]

【讨论】:

  • 添加了一张图片
  • @ElgunValiyev 请添加文本或代码
  • 您的代码给出了唯一组件名称的列表,而不是它们的索引。
  • @ElgunValiyev 对。这就是需要测试示例的原因
  • 这是从 csv 文件加载的,这就是为什么我不能在这里提供
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2015-06-10
  • 1970-01-01
  • 2015-01-10
相关资源
最近更新 更多