拥有一个pandas数据帧:
idx Event
0 abc/def
1 abc
2 abc/def/hij
运行:df['EventItem'] = df['Event'].str.split("/")
GOT:
idx EventItem
0 ['abc','def']
1 ['abc']
2 ['abc','def','hij']
想要获得每个cell
的长度,运行df['EventCount'] = len(df['EventItem'])
GOT:
idx EventCount
0 6
1 6
2 6
如何获得正确的计数?
idx EventCount
0 2
1 1
2 3
答案 0 :(得分:14)
您可以使用.str.len
获取列表的长度,即使列表不是字符串:
df['EventCount'] = df['Event'].str.split("/").str.len()
或者,您要查找的计数只比字符串中"/"
的计数多1,因此您可以在.str.count
的结果中加1:
df['EventCount'] = df['Event'].str.count("/") + 1
任一方法的结果输出:
Event EventCount
0 abc/def 2
1 abc 1
2 abc/def/hij 3
更大的DataFrame上的计时:
%timeit df['Event'].str.count("/") + 1
100 loops, best of 3: 3.18 ms per loop
%timeit df['Event'].str.split("/").str.len()
100 loops, best of 3: 4.28 ms per loop
%timeit df['Event'].str.split("/").apply(len)
100 loops, best of 3: 4.08 ms per loop
答案 1 :(得分:6)
您可以使用apply
将len
功能应用于每列:
df['EventItem'].apply(len)
0 2
1 1
2 3
Name: EventItem, dtype: int64