熊猫:计算资本的麻烦

时间:2017-07-18 11:59:01

标签: python pandas

我有一个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,而不是给我计数。

我做错了什么?我认为这会计算每段文字中的首都数量......

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您需要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  3