首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python熊猫数据跳线

Python熊猫数据跳线
EN

Stack Overflow用户
提问于 2018-10-05 00:45:05
回答 1查看 629关注 0票数 0

因此,我有一个循环,它向dataframe添加一个字符串。这个很好用。但是,当我试图在第二列中添加一个数字时,它跳过了行(正如您在输出中看到的那样).`,而计数器< 50:

代码语言:javascript
复制
    #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)`

产出-

代码语言:javascript
复制
               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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-05 00:47:56

pd.DataFrame.append每次追加一行。您可以在字典中包含两个键,以便为每次迭代添加一行:

代码语言:javascript
复制
df = df.append({'Subreddit': e, 'Appearances': 1}, ignore_index=True)

但是,您不应该以这种方式在循环中使用pd.DataFrame.append。这将是低效的,因为由于额外的复制操作,pd.DataFrame.appendlist.append昂贵。

相反,您可以构建一个列表并调用pd.DataFrame.append一次。下面是一些伪代码:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52656862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档