为了账号安全,请及时绑定邮箱和手机立即绑定

为垃圾箱创建新列是可行的,但在所有行中只给出一个垃圾箱

为垃圾箱创建新列是可行的,但在所有行中只给出一个垃圾箱

DIEA 2023-08-22 15:56:28
我快要疯了,因为无论我做什么,我就是不知道出了什么问题。问题:我有一个df。其中一栏是:Opnameduur。这是 int64 类型。我的 def 创建了一个名为:Klasse 的新列。这工作正常。但是....根据 df.Opnameduur 列中找到的值,该函数应该在相应行中写入一个 bin (dag, kort, middel, long (witch 是荷兰语,表示日、短、中、长)新专栏 df.Klasse。已创建列 df.Klasse,但 df.KLasse 中的所有值均设置为:dag。我只是不明白这里出了什么问题......df.Opnameduur.head()给出:0    11    12    93    14    3因此,前两行应给出:dag,在 df.Klasse 中,第三行应给出:long。ETC。但是,我的 def 在整个新列 df.Klasse 中设置了“dag”。我自己没看到就觉得自己很蠢。所以..我需要你的帮助!这是我的功能:def Klasse(df):    for index, value in df.Opnameduur.items():        if value == 1:            df['Klasse'] = 'dag'        elif value == 2:            df['Klasse'] = 'kort'        elif value == 3:            df['Klasse'] = 'kort'        elif value == 4:            df['Klasse'] = 'middel'        elif value == 5:            df['Klasse'] = 'middel'        elif value == 6:            df['Klasse'] = 'middel'        elif value >= 7:            df['Klasse'] = 'lang'        else:            df['Klasse'] = 'onbekend'我现在已经读过有关 pandas.cut 的内容,但在深入研究之前,我想先了解一下我在这里犯的错误(应该是......)非常简单的 if、elif、else。提前致谢!!!问候简
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

在执行 时df['Klasse'] == 'value',value被分配给整个列,因为分配是矢量化操作。您可以使用locpandas 中的 dataframe 方法并传递行和列的正确索引名称,以重新分配值,如下所示:


def Klasse(df):

    for index, value in df.Opnameduur.items():

        if value == 1:

            df.loc[index, 'Klasse'] = 'dag'

        elif value == 2:

            df.loc[index, 'Klasse'] = 'kort'

        elif value == 3:

            df.loc[index, 'Klasse'] = 'kort'

        elif value == 4:

            df.loc[index, 'Klasse'] = 'middel'

        elif value == 5:

            df.loc[index, 'Klasse'] = 'middel'

        elif value == 6:

            df.loc[index, 'Klasse'] = 'middel'

        elif value >= 7:

            df.loc[index, 'Klasse'] = 'lang'

        else:

            df.loc[index, 'Klasse'] = 'onbekend'


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 1526 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信