无法获得numpy.ndarray的大小

时间:2018-03-11 18:25:21

标签: python pandas numpy dataframe

我的数据框如下:

  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

我怎么能得到它?

1 个答案:

答案 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]