我有一个Pandas DataFrame,df,包含一个名为_text的列。我试着计算每一段文字中大写字母的数目,如下所示:
text_capitals_count = [sum(1 for char in x if char.isupper()) for x in df['_text']]如果文本中的任何地方都有大写字母,text_capitals_count将被设置为1,而不是给我计数。
我做错什么了?我以为这会把每一段文字的大写字母数起来.
谢谢!
发布于 2017-07-18 12:19:18
我认为您需要split并通过[0]选择文本的第一个字符。
df = pd.DataFrame({'_text':['FFfgdFF','TT gd F','GG','EE EE U']})
print (df)
_text
0 FFfgdFF
1 TT gd F
2 GG
3 EE EE U
a = [sum(1 for char in x if char[0].isupper()) for x in df['_text'].str.split()]
print (a)
[1, 2, 1, 3]
a = [sum(1 for char in x.split() if char[0].isupper()) for x in df['_text']]
print (a)
[1, 2, 1, 3]另一种解决办法是:
df['a'] = df['_text'].str.split(expand=True)
.apply(lambda x: x.str[0].str.isupper()).sum(axis=1).astype(int)
print (df)
_text a
0 FFfgdFF 1
1 TT gd F 2
2 GG 1
3 EE EE U 3https://stackoverflow.com/questions/45166163
复制相似问题