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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据另一列中的单元格值有条件地填充熊猫列相关的知识,希望对你有一定的参考价值。

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

如果操作系统包含“ Windows Server”,则平台要包含服务器或包含(“ Windows 7 | Windows 10”),而不是平台需要“ Workstation”

我尝试过的代码:

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:UsersAbhinav KumarDesktopweeklycode.py"
Traceback (most recent call last):
  File "c:UsersAbhinav KumarDesktopweeklycode.py", line 36, in <module>
    dfADTM['Platform AD'] = np.select(conditions, choices, default='Check')
  File "C:ProgramDataAnaconda3libsite-packages
umpylibfunction_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

预期的结果数据帧为:Dataframe

答案

不是一种有效的方法,但是可以完成工作

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')

如果需要,您可以删除索引或将其重置

以上是关于如何根据另一列中的单元格值有条件地填充熊猫列的主要内容,如果未能解决你的问题,请参考以下文章

根据熊猫中的另一个列值有条件地填充列值

如何根据excel中的另一个单元格值自动填充两个不同列中的数据

Excel 查找某列中的数值有没有在另一列中出现

如何根据另一列设置熊猫数据框背景颜色

在 pandas 中,如何根据一列中的唯一值创建列,然后根据另一列中的值填充它?

Excel:如果在另一列中发现重复的单元格值,则突出显示绿色