我是熊猫的新手,我正在尝试创建新列,其长度为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
答案 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')]))