熊猫添加计算列使所有值相同

时间:2020-03-15 17:34:09

标签: python pandas

我是熊猫的新手,我正在尝试创建新列,其长度为frame['sld'],在frame['sld']中有许多元音。

问题在于元音的数量始终为0,sld的长度始终为10行。

frame = read_frame(Domain.objects.all()[:10]) 
frame['sld_length'] = len(frame['sld']) 
frame['value'] = len([x for x in frame['sld'] if x in list('aeiouy')])

其中slds['google','facebook'...]

你知道怎么了吗?

编辑:

 df = pd.DataFrame([['com','google'],['com','facebook']], columns=['tld','sld'])  
 df['sld_len'] = len(df['sld'])
 df['vowels_count'] = len([x for x in df['sld'] if x in list('aeiouy')])

创建此DF:

   tld       sld  sld_len  vowels_count
0  com    google        2             0
1  com  facebook        2             0

2 个答案:

答案 0 :(得分:4)

您应该使用str提供的内置方法来获得所需的结果。

df['sld_len'] = df.sld.str.len()
df['vowels_count'] = df.sld.str.count('[aeiouy]')

   tld       sld  sld_len  vowels_count
0  com    google        6             3
1  com  facebook        8             4

答案 1 :(得分:2)

您可以.apply自定义函数,以便将其应用于数据框而不是整个数据框中的每个值,

df = pd.DataFrame([['com','google'],['com','facebook']], columns=['tld','sld'])  
df['sld_len'] = df.sld.str.len()
df['vowels_count'] = df.sld.apply(lambda sld : len([x for x in sld if x in list('aeiouy')]))