计算熊猫列表的长度

时间:2020-08-19 07:29:45

标签: python pandas

我遇到的问题是扩展到thisthis。假设我有这样的数据框:

    A   B
0   1   [["Thing_1"]]
1   2   [["Thing_1"], ["Thing_2"]]
2   3   [["Thing_1", "Thing_2"], ["Thing_2"]]
3   4   [["Thing_1"], ["Thing_1", "Thing_2"]]
4   5   [["Thing_1", "Thing_2"], ["Thing_1", "Thing_2"]]

而不是像这样:

    A   B                                                 C(result of length in column B)
0   1   [["Thing_1"]]                                     1
1   2   [["Thing_1"], ["Thing_2"]]                        2
2   3   [["Thing_1", "Thing_2"], ["Thing_2"]]             2
3   4   [["Thing_1"], ["Thing_1", "Thing_2"]]             2
4   5   [["Thing_1", "Thing_2"], ["Thing_1", "Thing_2"]]  2

使用以下功能:df['B'].str.len()df['B'].apply(len),列C成为列表列表中字符的长度,而不是列表列表的外部长度。我怎样才能得到正确的结果?

1 个答案:

答案 0 :(得分:1)

我认为您的B列实际上是字符串类型,因为它为您提供了一定长度的字符,因此请首先尝试使用ast.literal_eval将列从字符串类型更改为列表,然后再使用{{1 }}或df['B'].apply(len)

df['B'].str.len()

或者,如果您只需要长度而不更改B列的类型,请尝试使用单个import ast df['B']=df['B'].apply(ast.literal_eval) df['C']=df['B'].apply(len)

apply

输出:

df['C']=df['B'].apply(lambda x:ast.literal_eval(x)).str.len()