我的数据框如下:
version count region listing
2 v2 2 CAN [7, 8]
2 v3 3 CAN [7, 8, 9]
我想为每一行提取listing
列表并获取长度。所以我做了以下事情:
group_v2_list = group[group['version'] == 'v2']['listing'].values
我输出为[list([7, 8])]
。此处listing
列的类型为numpy.ndarray
,我在使用type(group_v2_list)
后获得了该字段。
现在我想获得此group_v2_list
中的元素数量,但我无法得到它。
我尝试了len(group_v2_list)
和group_v2_list.size
,但两人都给了我1
。我想将2
的元素数量设为7, 8
。
我怎么能得到它?
答案 0 :(得分:0)
您无需为此访问numpy
表示。
一种方法是使用.loc
访问器来提取系列并找到第一个元素的长度:
df = pd.DataFrame({'version': ['v2', 'v3'],
'count': [2, 3],
'region': ['CAN', 'CAN'],
'listing': [[7, 8], [7, 8, 9]]})
df_v2_list = df.loc[df['version'] == 'v2', 'listing']
res_v2 = len(df_v2_list[0])
# 2
如果过滤后的数据中有多个元素,您可以使用pd.Series.map(len)
检索其长度列表:
df_v_all_list = df.loc[df['version'].str.startswith('v'), 'listing']
res_all = df_v_all_list.map(len).tolist()
# [2, 3]