【问题标题】:How to add values to column using loop Pandas如何使用循环 Pandas 向列添加值
【发布时间】:2020-03-08 11:57:14
【问题描述】:

我想知道如何在从网络抓取中获取信息时动态更改列的值。

目前,我有这样的事情:

number name 12 NA 13 NA 14 NA 15 NA

我想收到这样的东西:

number name 12 Mike 13 Bob 14 Bobby 15 Mark

我试过用这个: for number in phone_book: name = get_name() phonebook['names'][number] = name

phonebook.loc[phonebook.index[number], 'name'] = name

但它只是为所有人设置了最后一个数字的名称:

number name 12 Mark 13 Mark 14 Mark 15 Mark 我怎样才能让它将每个名称添加到其各自的数字中?

谢谢

【问题讨论】:

  • phonebook.loc[phonebook.number == number, 'names'] = name
  • @QuangHoang 非常感谢,这行得通!你能解释一下为什么我需要phonebook.number == number吗?
  • phonebook.number == number 查看您的phonebook 中的'number' 列并标记正确的列。 .loc 让您可以访问相应的行/列。

标签: python pandas loops dataframe


【解决方案1】:

从您的网络抓取中,您可以构建一个如下所示的字典:


name = {12: 'Mike', 13: 'Bob', 14: 'Bobby', 15: 'Mark'}

然后你可以映射到你现有的框架:

df['name']=df['number'].map(name)
df = df.set_index('number')
print(df) 
         
number   name    
12       Mike
13        Bob
14      Bobby
15       Mark

【讨论】:

    【解决方案2】:

    你有几种方法可以做到这一点,首先喜欢@Quang Hoang 评论:

    phonebook.loc[phonebook.number == number, 'names'] = name
    

    你也可以这样做:

    for number in phone_book:
        name = get_name()
        phonebook[phonebook["number"] == number] = name
    

    或者像这样:

    names = []
    for number in phone_book:
        names.append(get_name())
    phonebook["name"] = names
    

    请注意,首选方法是第一种。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 2020-03-08
      相关资源
      最近更新 更多