编写 Python 代码,用于过滤给定数据框中的回文姓名。
打印回文姓名的结果如下:
Palindrome names are: Id Name 0 1 bob 2 3 hannah
为了解决这个问题,我们将遵循以下方法:
方案 1
定义数据框
在 set 循环内创建列表推导式,使用 i 变量访问 df['Name'] 列中的所有值,并设置 if 条件以比较 i==i[::-1],然后将 i 值添加到列表中。
l = [ i for i in df['Name'] if(i==i[::-1])]
最后,使用 isin() 检查列表值是否出现在 df['Name'] 列中。
df[df['Name'].isin(l)]
示例
让我们检查以下代码以更好地理解:
import pandas as pd data = {'Id':[1,2,3,4,5],'Name':['bob','peter','hannah','james','david']} df = pd.DataFrame(data) print("DataFrame is:\n", df) l = [ i for i in df['Name'] if(i==i[::-1])] print("Palindrome names are:\n", df[df['Name'].isin(l)])
输出
DataFrame is: Id Name 0 1 bob 1 2 peter 2 3 hannah 3 4 james 4 5 david Palindrome names are: Id Name 0 1 bob 2 3 hannah
方案 2
定义数据框
应用 lambda 过滤器函数,将 df['Name'] 的每个值与 reversed 函数返回的结果进行比较,看是否相同。如果值匹配,则将其存储为结果列表。
result = list(filter(lambda x:(x=="".join(reversed(x))),df['Name']
最后,使用 isin() 检查列表值是否出现在 df['Name'] 列中。
df[df['Name'].isin(result)]
示例
让我们检查以下代码以更好地理解:
import pandas as pd data = {'Id':[1,2,3,4,5],'Name':['bob','peter','hannah','james','david']} df = pd.DataFrame(data) print("DataFrame is:\n", df) result = list(filter(lambda x:(x=="".join(reversed(x))),df['Name'])) print("Palindrome names are:\n", df[df['Name'].isin(result)])
输出
DataFrame is: Id Name 0 1 bob 1 2 peter 2 3 hannah 3 4 james 4 5 david Palindrome names are: Id Name 0 1 bob 2 3 hannah
广告