首页 > 解决方案 > 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...

标签: pythonpandas

解决方案


根据您提供的解释,如果 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,即''


推荐阅读