python - Python panda根据长度修改特定列值
问题描述
我有一个数据框的子集,在该子集中我有一个标题为“Place_of_birth”的列。
如果出生地以美国的两个字符(即'Pasadena,Ca')结尾,那么我需要更新数据以包括出生国家,只要数据以两个字符结尾。
列中非美国的所有其他数据不以两个字符结尾/包含一个单词。
我需要一个可以将出生国家添加到行中的函数,但不会更改非美国位置的数据。
例如:
import pandas as pd
birth_data = {'place_of_birth': ['Pasadena, Ca','Glasgow, Scotland','Chicago, Il','Bisacquino, Sicily, Italy'],
'year_of_birth': [1997, 1976, 1981, 1992]
}
df = pd.DataFrame(birth_data, columns = ['place_of_birth', 'year_of_birth'])
print (df)
'place_of_birth' 列应为:
美国加利福尼亚州帕桑迪纳
苏格兰格拉斯哥
ETC...
解决方案
根据您提供的解释,如果 Place_of_birth 有以逗号分隔的字符串并且最后一个单词有两个字符,那么国家应该是 USA,您可以使用np.select
import numpy as np
df['Country'] = np.select([df['Place_of_birth'].str.split(',').str[-1].str.len()==2], ['USA'], None)
如果你不想要None,你可以用空字符串替换None,即''
推荐阅读
- r - R:将数据框拆分为列并重新组合为行
- python - 在chrome无头模式下使用python selenium定位部分链接文本
- ios - SQFlite 无法在 iOS 14.3 上插入数据库
- arrays - 为什么 for 循环用最新的字符串填充整个数组?
- node.js - 如何使用 pkg 中的 figlet 模块编译 Node.js?
- azure-web-app-service - 基于spring boot问题从github repo加载的azure web app
- python - 随机 nr gen python(标题无法持续工作)
- django - Django 表单 - 允许用户为其他用户创建组
- python - __init__() 接受 2 个位置参数,但给出了 3 个尝试使用 presence_of_element_located() 等待元素
- node.js - 当进程消耗大量内存时,NodeJs 会变慢