python - 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', 'N3', 'N5']:
B.loc[index, 'Category'] = 'NN2'
推荐阅读
- c# - 为什么 GetProcesses() 不显示所有正在运行的进程
- python-3.x - python3:无法打开文件 - 如何使用 Docker 访问目录
- r - 如何从 R 中的文本文件中读取?
- python - 如果满足条件,则使用另一列中的多个字符串之一更改一列
- android-fragments - 使用导航 UI 时使用 Espresso 正确测试片段
- foreach - MySQL 8 Recursive CTE 为每个项目创建行
- python - 删除二叉树最左边的叶子
- elixir - (FunctionClauseError) CheckersgameWeb.GamesChannel.handle_in/3 中没有函数子句匹配
- python-3.x - 临时变量的变化正在影响从中提供的变量
- c# - 如何在mongodb + C#中计算、选择和更新嵌套元素