如何通过条件表达式覆盖系列值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (31)

我正在尝试基于条件表达式覆盖DataFrame中的新列:

  1. if df['service'] == 'PE1' or 'PE2':
  2. 将df ['service']中的现有值更改为等于原始df ['service'] + df ['load port']。 # if ['load port] == 'ABC' then new value == PE1ABC
  3. 否则:将原始值保留在df ['service']中 # in other words != 'PE1' or 'PE2'.

我正在尝试将.merge()用于另一个DataFrame的“VLOOKUP”。但是,'PE1'和'PE2'服务需要加载端口。所有其他服务都有1:1的分配。

提问于
用户回答回答于

你可以用条件来定义函数,而不是使用apply函数更改列。

示例数据框架:

import pandas as pd

df = pd.DataFrame({'service':['PE1','PE2','bla','ble','PE2'],\
                   'load port':['ABC','TEST','BLA','BLA','BLE']})

输出:

  load port service
0       ABC     PE1
1      TEST     PE2
2       BLA     bla
3       BLA     ble
4       BLE     PE2

改变功能函数:

def changeService(row):
    if row['service'] == 'PE1' or row['service'] == 'PE2':
        return row['service'] + row['load port']
    return row['service']

应用更改函数,以便覆盖你的列:

df['service'] = df.apply(changeService, axis = 1)

输出:

  load port  service
0       ABC   PE1ABC
1      TEST  PE2TEST
2       BLA      bla
3       BLA      ble
4       BLE   PE2BLE

注:建议你的更改函数始终具有return,否则一些行将被填充。

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问5 回答
  • 天使的炫翼

    17 粉丝531 提问5 回答
  • 不吃貓的鱼oo

    4 粉丝466 提问4 回答
  • 找虫虫

    0 粉丝0 提问4 回答

扫码关注云+社区

领取腾讯云代金券