python - 如果以特定字符串结尾,则创建一个新列

标签 python string pandas series ends-with

我有一个数据框和一个列表。我想检查列中的字符串是否以列表中的任何内容结尾。我想创建一个新列,显示如果列以列表中的任何内容结尾,则值为“Y”,其他为“N”。我的数据框数据如下所示:

import pandas as pd
city = ['New York', 'Los Angeles','Buffalo','Miami','San Deigo', 'San 
Francisco']
population = ['8.5','3.9','0.25','0.45','1.4','0.87']
df = pd.DataFrame({'city':city,'population':population})

ending = ['les','sco', 'igo']

预期结果应该是这样的:

city          population    flag
New York       8.5          N
Los Angeles    3.9          Y
Buffalo        0.25         N
Miami          0.45         N
San Deigo      1.4          Y
San Francisco  0.87         Y

我尝试使用 if 语句:

if df['city'].str.endswith(tuple(ending)):
   val = 'Y'
elif df['city'].str.endswith(tuple(ending)):
    val= 'Y'
else:
   val = 'N'

我收到错误信息:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有什么建议吗?谢谢!

最佳答案

使用str.endswith,结束时不需要相同长度的字符串

df.city.str.endswith(tuple(ending)).map({True:'Y',False:'N'})
0    N
1    Y
2    N
3    N
4    Y
5    Y
Name: city, dtype: object

关于python - 如果以特定字符串结尾,则创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50995942/

相关文章:

python - 将 Linux 上的 Python 脚本打包成 Windows 可执行文件

Python - 保存在 GNU Nano 2.2.4 中编辑的文件

java - 如何使用主类中的方法打印的输出?

python - 以优化方式使用 Pandas 在 DataFrame 中查找和替换

python - 如何合并具有稍微不同的合并字段的 DataFrame

python - Kivy:如何更改窗口大小?

javascript - 在 Google App Engine 上使用 jQuery 处理 json 表单

javascript - 替换特定开始结束位置的字符串 javascript

c++ - 如何将字符串的一部分转换为整数?

python - Pandas:写入 Excel 在 Databricks 中不起作用