【问题标题】:Python panda ammending specific column values based on lengthPython panda根据长度修改特定列值
【发布时间】:2021-06-22 14:35:34
【问题描述】:

我有一个数据框的子集,在该子集中我有一个标题为“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”列应该是:

美国加利福尼亚州帕桑迪纳

苏格兰格拉斯哥

等等……

【问题讨论】:

  • 欢迎来到 SO!非美国的地方有逗号吗?如果他们没有,那么您可以检查字符串是否有逗号并使用它来确定它是否在美国。
  • 请提供minimal reproducible example,其中包含示例输入和预期输出,以及您迄今为止尝试过的代码,以便我们更好地了解如何提供帮助
  • 另外,当有人提供此链接时 ===> minimal reproducible example 您应该点击它并阅读内容并编辑您的问题,以便我们更容易理解您想要做什么.
  • 大多数都有逗号,但不是全部,我相信所有美国地方!第一次使用所以道歉

标签: python pandas


【解决方案1】:

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

【讨论】:

  • 尝试并最终得到一个新列,无论字符串长度如何,都用“None”填充,我认为你的意思是最后是 ')' 而不是 ']'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 2020-08-18
  • 2019-10-29
  • 2020-10-05
  • 2019-06-19
  • 1970-01-01
相关资源
最近更新 更多