Python 使用枚举在数据帧中进行For循环

Python 使用枚举在数据帧中进行For循环,python,pandas,dataframe,enumerate,Python,Pandas,Dataframe,Enumerate,我有一个基本的数据帧,它是不干净数据的gruopby结果: df: Name1 Value1 Value2 A 10 30 B 40 50 我创建了一个列表,如下所示: Segment_list = df['Name1'].unique() Segment_list array(['A', 'B'], dtype=object) 现在我想遍历列表,并在Value1中找到每次迭代的金额,因此我使用: for Segment_list

我有一个基本的数据帧,它是不干净数据的gruopby结果:

 df:

Name1   Value1  Value2
A       10      30
B       40      50
我创建了一个列表,如下所示:

Segment_list = df['Name1'].unique()
Segment_list 

array(['A', 'B'], dtype=object)

现在我想遍历列表,并在Value1中找到每次迭代的金额,因此我使用:

for Segment_list in enumerate(Segment_list):
    print(df['Value1'])

但我得到的是两个值,而不是一个一个。我只需要一个迭代的值。这可能吗

Expected output:

10
40

我同意@Trenton的评论,即使用数据帧的全部目的是避免像这样循环通过它们。使用函数重新思考这个问题。然而,让你所写的东西发挥作用的最接近的方法是:

Segment_list = df['Name1'].unique()
for Index in Segment_list:
    print(df['Value1'][df['Name1']==Index]).iloc[0]
如果
Name
有两个条目(可能是因为您使用
.unique()
,所以可能会出现这种情况),这将根据您希望发生的情况打印值的总和:

df.groupby('Name1').sum()['Value1']
  • 我建议使用获取每个组的值
  • 在大多数情况下,对pandas使用
    For循环
    表明它可能没有正确或有效地完成
  • 额外资源:
备选案文1:
将熊猫作为pd导入
将numpy作为np导入
随机输入
np.random.seed(365)
随机种子(365)
行=25
数据={'n':[random.choice(['A','B','C']),用于范围(行)中的uu,
“v1”:np.random.randint(40,大小=(行)),
“v2”:np.random.randint(40,大小=(行))}
df=pd.DataFrame(数据)
#群比
对于df.groupby('n')中的g,d:
#打印(g)#根据需要使用或不使用
打印(d.v1.values[0])#选择每组的第一个值并打印
[输出]:#每组的第一个值
5.
33
18
备选案文2:
dfg=df.groupby(['n'],as_index=False).agg({'v1':list})
#显示器(dfg)
n v1
0A[5,26,39,39,10,12,13,11,28]
1b[33,34,28,31,27,24,36,6]
2c[18,27,9,36,35,30,3,0]
备选案文3:
  • 如注释中所述,您的数据已经是
    groupby
    的结果,并且每个组的列中只有一个值
dfg=df.groupby('n',as_index=False).sum()
#显示器(dfg)
n v1 v2
0 A 183 163
1 B 219 188
2 C 158 189
#打印v1中每个组的值
对于dfg.v1.to_list()中的v:
印刷品(五)
[out]:
183
219
158
备选案文4:
  • 打印每列的所有行
dfg=df.groupby('n',as_index=False).sum()
对于dfg.columns[1::]:#选择n之后的所有列
对于dfg[col]中的v,到_列表():
印刷品(五)
[out]:
183
219
158
163
188
189