以下代码读取一个csv文件,并在“ sub”列的行上进行迭代:
df = pd.read_csv("Subs_test.csv", usecols= ['sub'])
for index, row in df.iterrows():
subreddit = reddit.subreddit(row['sub']).subscribers
subreddit
我的问题:
这只是给我最后一行的结果。 您能帮我解决这里发生的事情吗?
谢谢
答案 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()]
将返回所有行的列表。