python - 如何在不转换为字符串的情况下计算所有列表元素中的总大写字母
问题描述
我的数据:
import pandas as pd
data = {'game': [1, 2], 'moves': [['D4', 'd5', 'NF4'],['d5', 'c6', 'Be4']]}
df = pd.DataFrame(data)
| game | moves |
|------|--------------|
| 1 |[D4, d5, NF4] |
| 2 |[d5, c6, Be4] |
对于每一行,我想提取“moves”列中列表的前 n 个元素中的大写字母数。到目前为止,我有这个解决方案:
count = []
for row in df.moves:
count.append(sum(1 for elem in listToString(row[0:10]) if elem.isupper()))
这可行,但我更喜欢不涉及连接列表的字符串元素的解决方案。有这样的事吗?
输出:
[3, 1]
解决方案
尝试这个:
count = df['moves'].apply(lambda x: sum(1 for i in x[:10] for y in i if y.isupper())).tolist()
输出:
[3, 1]
推荐阅读
- php - 如何使用 PHP 检查数据是否已经在 MySQL DB 中?
- solr - Solr 有效负载:计数具有最高有效负载值的术语
- sql - 在子查询中使用 LIMIT ALL 有什么好处?
- java - Apache Ant 没有编译我的所有文件
- javascript - 如何在 ReactJS 中获取没有正斜杠的路由名称
- angular - Access child component variables within ng-container
- ios - 转换 UnsafeMutablePointer 时堆缓冲区溢出
到字符串 - php - 在 PHP 中将 base64 字符串转换为十进制二进制数组
- angular - 在 apache 文件夹中部署 Angular 应用程序
- angular - 如何将 Angular Elements 与“ng g library”方法混合使用?