从此数据帧 df
开始:
node1,node2,lang,w,c1,c2
1,2,it,1,a,a
1,2,en,1,a,a
2,3,es,2,a,b
3,4,it,1,b,b
5,6,it,1,c,c
3,5,tg,1,b,c
1,7,it,1,a,a
7,1,es,1,a,a
3,8,es,1,b,b
8,4,es,1,b,b
1,9,it,1,a,a
我执行了一个 groupby
操作,例如:
g = df.groupby(['c1','c2'])['lang'].unique().reset_index()
结果:
c1 c2 lang
0 a a [it, en, es]
1 a b [es]
2 b b [it, es]
3 b c [tg]
4 c c [it]
保存为 .csv 并读回:
g.to_csv('myfile.csv')
g = pd.read_csv('myfile.csv')
获取不同格式的lang
列:
c1 c2 lang
0 a a ['it' 'en' 'es']
1 a b ['es']
2 b b ['it' 'es']
3 b c ['tg']
4 c c ['it']
我现在的目标是计算 lang
每一行中的项目数,并能够单独获取这些值。我试图用字符串数组的长度构建一个新列:
g['len'] = df['lang'].apply(lambda x: x.size)
获取:
AttributeError: 'str' object has no attribute 'size'
查看 lang
列的值,我意识到在 groupby 之后该列变得一团糟:
In [113]: g['lang'].values
Out[113]: array(["['it' 'en' 'es']", "['es']", "['it' 'es']", "['tg']", "['it']"], dtype=object)
如何获取每个嵌套字符串数组的长度,然后获取其中每个字符串的值?我想在 this转换类型,但我的情况有点太复杂了。
编辑:在写入/读取 .csv 之前和之后添加有关 lang
列的不同格式的信息。
最佳答案
只需应用
len
:
In [145]:
g['size'] = g['lang'].apply(len)
g
Out[145]:
c1 c2 lang size
0 a a [it, en, es] 3
1 a b [es] 1
2 b b [it, es] 2
3 b c [tg] 1
4 c c [it] 1
关于python - pandas 从数组中获取嵌套的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35746039/