如何将列表循环到loc,isin和sum函数

时间:2019-08-22 04:50:33

标签: python pandas loops

我从CSV工作表中获得了ID#的列表。该列表的索引为200。使用该列表,我能够从数据框中获取与ID#关联的薪水。

为匹配它们,我在下面使用了此代码。 a&b从与名为IDlist的列表中的第一个ID号匹配的数据中获取薪水,并汇总列出的薪水。

a =df.loc[df['ID'].isin(IDlist[0])].sum(axis=0,skipna=True).loc['salary']
b =df.loc[df['ID'].isin(IDlist[1])].sum(axis=0,skipna=True).loc['salary']

当我获得第一个3时,我感到非常高兴。然后意识到我要永远达到200。

有没有一种方法可以单独循环此IDlist [0:200]而无需在上面的同一行中键入200?

非常感谢。

1 个答案:

答案 0 :(得分:1)

有很多方法可以提取数据,但最简单的方法是:

salaries = [df.loc[df['ID'].isin(IDlist[x])].sum(axis=0,skipna=True).loc['salary'] for x in range(0,200)]

如果您想将ID映射到薪水,则可能会更喜欢并使用dict理解:

salaries = {IDlist[x]:df.loc[df['ID'].isin(IDlist[x])].sum(axis=0,skipna=True).loc['salary'] for x in range(0,200)}

我正在假设有关数据结构方式的一些事情,但我认为这将为您提供与薪水相关的ID字典。