首页 > 解决方案 > 如何在不转换为字符串的情况下计算所有列表元素中的总大写字母

问题描述

我的数据:

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]

标签: pythonpython-3.xpandaslist

解决方案


尝试这个:

count = df['moves'].apply(lambda x: sum(1 for i in x[:10] for y in i if y.isupper())).tolist()

输出:

[3, 1]

推荐阅读