我遇到的问题是扩展到this和this。假设我有这样的数据框:
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成为列表列表中字符的长度,而不是列表列表的外部长度。我怎样才能得到正确的结果?
答案 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()