编写 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

更新于: 2021年2月25日

556 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告