所以我有这个循环,将字符串添加到数据帧。这很好。但是,当我尝试在第二列中添加数字时,它会跳过行(如您在输出中看到的那样)。而计数器<50:
#gets just the subreddit name
e = str(elem[counter].get_attribute("href"))
e = e.replace("https://www.reddit.com/r/", "")
e = e[:-1]
#e is the subreddit string
df = df.append({'Subreddit': e}, ignore_index=True)
df = df.append({'Appearances': 1 }, ignore_index=True)
print(e)
counter = counter + 2
print(df)`
输出-
Subreddit Appearances
0 worldnews NaN
1 NaN 1
2 pics NaN
3 NaN 1
4 aww NaN
5 NaN 1
6 RedditInReddit NaN
我知道这与我的循环方式有关,但是我似乎无法理解。另外,我每次必须增加2,因为子reddit在页面上出现了两次,而我只需要抓住1。
答案 0 :(得分:0)
pd.DataFrame.append
每次都附加一行。您可以在字典中包含2个键,以便为每次迭代添加一行:
df = df.append({'Subreddit': e, 'Appearances': 1}, ignore_index=True)
但是您永远不必这样循环使用pd.DataFrame.append
。由于pd.DataFrame.append
相对于list.append
昂贵,由于进行了额外的复制操作,因此效率低下。
相反,您可以构建列表列表,然后调用pd.DataFrame.append
。这是一些伪代码:
L = []
for _ in some_iterable:
L.append([e, 1])
to_append = pd.DataFrame(L, columns=['Subreddit', 'Appearances'])
df = df.append(to_append, ignore_index=True)