熊猫的行程只给出最后一行的结果

时间:2019-01-11 14:25:05

标签: python python-3.x pandas loops

以下代码读取一个csv文件,并在“ sub”列的行上进行迭代:

df = pd.read_csv("Subs_test.csv", usecols= ['sub'])
for index, row in df.iterrows():
    subreddit = reddit.subreddit(row['sub']).subscribers
subreddit

我的问题:

这只是给我最后一行的结果。 您能帮我解决这里发生的事情吗?

谢谢

2 个答案:

答案 0 :(得分:3)

因为您在循环中设置了subreddit。最后一行总是等于

例如

In [1]: for i in range(10):
   ...:     a = i
   ...: a
Out[1]: 9

如果您想将值放入列表中,则可以使用这样的循环

df = pd.read_csv("Subs_test.csv", usecols= ['sub'])
subreddit = []
for index, row in df.iterrows():
    subreddit.append(reddit.subreddit(row['sub']).subscribers)
subreddit

或列表理解

subreddit = [reddit.subreddit(row['sub']).subscribers for index, row in df.iterrows()]
print(subreddit)

答案 1 :(得分:2)

正如注释中已经指出的那样,您在每次迭代期间重新定义subreddit,这就是为什么在代码末尾,其值仅是最后一行的原因。我猜你想要的是所有行的列表,或类似的东西。使用列表理解来解决此问题:

subreddit = [reddit.subreddit(row['sub']).subscribers for index, row in df.iterrows()]

将返回所有行的列表。