【问题标题】:How to create new column using loop with condition如何使用带条件的循环创建新列
【发布时间】:2022-09-23 15:19:09
【问题描述】:

这是我的 DataFrame,我想使用带条件的循环创建一个新列。

import pandas as pd
student_card = pd.DataFrame({\'ID\':[20190103, 20190222, 20190531],
                             \'name\':[\'Kim\', \'Yang\', \'Park\'],
                             \'class\':[\'H\', \'W\', \'S\']})


student_card[\'new\'] = pd.Series() #1.create new column
for i, v in student_card[\'name\'].items(): #2.set index and values
    if \"Yang\" in v: #3.if there\'s \"Yang\" in value
        student_card[\'new\'].append(v) #4. append the value of name column in new coulum

所以我尝试了这种方法并遇到以下错误: TypeError: 无法连接类型为 \'<class \'str\'>\' 的对象;只有 Series 和 DataFrame obj 是有效的 顺便说一句,这不是真的(本专栏的类型是系列)

    标签: python loops series


    【解决方案1】:

    append 所做的是连接一个系列。请参阅此处的文档: https://pandas.pydata.org/docs/reference/api/pandas.Series.append.html

    你要找的是这个

    import pandas as pd
    student_card = pd.DataFrame({'ID':[20190103, 20190222, 20190531],
                                 'name':['Kim', 'Yang', 'Park'],
                                 'class':['H', 'W', 'S']})
    
    
    student_card['new'] = pd.Series() #1.create new column
    for i, v in student_card['name'].items(): #2.set index and values
        if "Yang" in v: #3.if there's "Yang" in value
            student_card['new'].loc[i] = v #4. append the value of name column in new coulum
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多