当前位置: 代码迷 >> python >> Python Pandas DataFrame跳过行
  详细解决方案

Python Pandas DataFrame跳过行

热度:90   发布时间:2023-07-16 10:33:11.0

所以我有这个循环,将字符串添加到数据帧。 这很好。 但是,当我尝试在第二列中添加数字时,它会跳过行(如您在输出中看到的那样)。而counter <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,因为subreddits在页面上出现了两次,我只需要抓住1。

每次追加一行。 您可以在字典中包含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)