Python 如何根据另一列中的单元格值有条件地填充该列

Python 如何根据另一列中的单元格值有条件地填充该列,python,pandas,Python,Pandas,我有一个大约10000行的数据框,并希望根据某些条件填充多个列 若操作系统包含“Windows服务器”,则平台采用服务器或包含('Windows 7 | Windows 10'),而平台采用“工作站” 我尝试过的代码: conditions = [ (dfADTM['Operating System'].str.contains('Windows Server')), (dfADTM['Operating System'].str.contains('Windows 10|Win

我有一个大约10000行的数据框,并希望根据某些条件填充多个列

若操作系统包含“Windows服务器”,则平台采用服务器或包含('Windows 7 | Windows 10'),而平台采用“工作站”

我尝试过的代码:

conditions = [
    (dfADTM['Operating System'].str.contains('Windows Server')),
    (dfADTM['Operating System'].str.contains('Windows 10|Windows 7|Windows XP')),
    (dfADTM['Operating System'].str.contains('Cisco|SLES|OnTap|unknown'))]
choices = ['Server', 'Workstation', 'Network Appliance']
dfADTM['Platform AD'] = np.select(conditions, choices, default='Check')
print(dfADTM.head())
我面临的错误:

[Running] python -u "c:\Users\Abhinav Kumar\Desktop\weekly\code.py"
Traceback (most recent call last):
  File "c:\Users\Abhinav Kumar\Desktop\weekly\code.py", line 36, in <module>
    dfADTM['Platform AD'] = np.select(conditions, choices, default='Check')
  File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\lib\function_base.py", line 715, in select
    'invalid entry {} in condlist: should be boolean ndarray'.format(i))
ValueError: invalid entry 0 in condlist: should be boolean ndarray

[Done] exited with code=1 in 7.725 seconds
[运行]python-u“c:\Users\Abhinav Kumar\Desktop\weekly\code.py”
回溯(最近一次呼叫最后一次):
文件“c:\Users\Abhinav Kumar\Desktop\weekly\code.py”,第36行,在
dfADTM['Platform AD']=np.select(条件、选项、默认值='Check')
文件“C:\ProgramData\Anaconda3\lib\site packages\numpy\lib\function\u base.py”,第715行,选择
condlist中的“无效项{}:应为布尔ndarray”。格式(i))
ValueError:condlist:中的无效项0应为布尔ndarray
[完成]在7.725秒内退出,代码=1
预期的结果数据帧为:
这不是一种有效的方法,但可以完成工作

df.index

for i in range(0,len(df)):
    if df['OS'][i].split(" ")[1]=='Server':
      df.set_value(i, 'Platform', 'Server')
    if df['OS'][i].split(" ")[1]=='7' or df['OS'][i].split(" ")[1]=='10':
      df.set_value(i, 'Platform', 'Workstation')
如果需要,可以删除索引或重置索引。您可以尝试以下操作: `


这回答了你的问题吗?检查链接请发布实际的源代码或打印输出,而不是links@Chris,共享实际代码
str.contains
返回布尔数组。不清楚您为什么会出现错误-可能您的专栏<代码>操作系统中除了<代码>字符串之外还有其他内容。使用
dfADTM['operation System'].str.contains('Windows Server',na=False)
import numpy as np
import pandas as pd
df['Platform']=np.nan #create an empty column in the dataframe
for i in range(len(df)):
        a=df['Operating System'][i]
        if ('Windows 10' or 'Windows 7' or 'Windows XP')  in a:
            df['Platform'][i]='Workstation'
        elif ('Cisco' or 'SLES' or 'OnTap' or 'unknown') in a:
            df['Platform'][i]='Network Appliance'
        elif ('Windows Server') in a:
            df['Platform'][i]='Server'
        else:
            df['Platform'][i]='Not mentioned' #For the values which do no fall into any category
`