Python 使用df.iterrows()方法访问一组行:
我使用df.iterrows()在数据帧中循环。我想设置每次访问的行数,而不是遍历所有行。首先我想访问前两行,然后是第三到第六行,然后是剩余的。有没有办法在各行之间循环 以下是我所拥有的:Python 使用df.iterrows()方法访问一组行:,python,pandas,matplotlib,Python,Pandas,Matplotlib,我使用df.iterrows()在数据帧中循环。我想设置每次访问的行数,而不是遍历所有行。首先我想访问前两行,然后是第三到第六行,然后是剩余的。有没有办法在各行之间循环 以下是我所拥有的: import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD')) df['key1'] = 0 df.key1.iloc[0:3] = 1 df.key1.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
df['key1'] = 0
df.key1.iloc[0:3] = 1
df.key1.iloc[3:7] = 2
df.key1.iloc[7:] = 3
df_grouped = df.groupby('key1')
for group_name, group_value in df_grouped:
fig, axes = plt.subplots(rows, 1, sharex=True, sharey=True, figsize= (15, 20))
for i,r in group_value.iterrows():
rows, columns = group_value.shape
r = r[0:columns-1]
r.plot(kind='bar', fill=False, log=False)
您可以根据您的条件创建一个列,然后对该列执行group by并对分组的数据进行迭代
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
df['key1'] = 0
df.key1.iloc[1:3] = 1
df.key1.iloc[3:7] = 2
df.key1.iloc[7:] = 3
df_grouped = df.groupby('key1')
for group_name, group_value in df_grouped:
for i,r in group_value.iterrows():
print i, max(r[:-1])
print '-' * 80
您能告诉我们每次迭代时
i
的值必须是多少吗?它是标量还是索引列表?“i”是行号,有助于使用df.iloc[i,1:]获取每行中的数据。因此,在循环中的每个实例上,它都是一个标量。谢谢你的帮助。我不确定我是否很好地回答了你的问题,但我希望这是有意义的。那么,你想如何使用你提到的这组索引:[0,1]
,然后[2,3,4,5]
,然后休息?是的,没错。我的意思是那些[0,1]
,然后[2,3,4,5]
不能是i
,因为正如您所说的i
必须是标量。那么,您想要两个级别的循环吗,一个选择这三个组中的一个,另一个从所选组的元素中选择i
?谢谢,我尝试了上面的代码,下面是得到的结果。。SettingWithCopyWarning:试图在数据帧切片的副本上设置值。它实际上并没有对数据帧进行切片。这只是一个示例,根据您的条件创建这样的列。请注意,这只是一个警告,您应该检查df.key1Thanks的值以供输入。我有进步。但是,我无法创建绘制每个子图的图。在一组三个图中,我只绘制了其中一个图,而组中其余两个图没有数据。看起来“r”值没有传递到“r.plot”。有没有关于为什么它没有传递到所有子批次的信息?请参见上面我的原始问题中的编辑。