如何解决python系列中的新列变量
我正在尝试使用以下代码对pd.Series中的数据进行分类:
for index in range (len(B)):
if B.loc[index,'N1','N4']:
B['Category'] = NN1
elif B.loc[index,'N2','N3','N5']:
B['Category']== NN2
else return(nan)
没有可遵循的模式,因为我已经对数据进行了预处理,并发现N1和N4属于NN1类别。 N2,N3和N5都属于NN2类别。
B是我的数据系列。 N1 N2 N3 N4 N5是我的行索引。 “类别”是我想在系列中添加的新列。
使用上面提到的代码,我的错误是:
TypeError: cannot do label indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [0] of <class 'int'>
有人可以帮助吗?
解决方法
您的代码有两个问题-首先,即使您有一个非数字索引,您还是将索引作为整数来处理。其次,您打算作为第二个任务实际上是一个布尔表达式。 return语句仅在函数主体中有意义,但是在Category
列中未得到显式分配的行将始终被分配nan
。由于您需要多个列,因此使用DataFrame而不是Series。如果您从其他地方收到了一个系列S
,则可以通过以下方式从中创建一个DataFrame:
B = pd.DataFrame(S,index=S.index).
使用B,您可以执行以下操作
for index in B.index:
if index in {'N1','N4'}:
B.loc[index,'Category'] = 'NN1'
elif index in {'N2','N3','N5'}:
B.loc[index,'Category'] = 'NN2'
或更确切地说
for index in ['N1','N4']:
B.loc[index,'Category'] = 'NN1'
for index in ['N2','N5']:
B.loc[index,'Category'] = 'NN2'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。