【问题标题】:How to get the length of a cell value in pandas dataframe?如何获取熊猫数据框中单元格值的长度?
【发布时间】:2016-05-20 09:37:19
【问题描述】:

有一个熊猫数据框:

idx Event
0   abc/def
1   abc
2   abc/def/hij

运行:df['EventItem'] = df['Event'].str.split("/")

得到:

idx EventItem
0   ['abc','def']
1   ['abc']
2   ['abc','def','hij']

想获取每个cell的长度,运行df['EventCount'] = len(df['EventItem'])

得到:

idx EventCount
0   6
1   6
2   6

我怎样才能得到正确的计数?

idx EventCount
0   2
1   1
2   3

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以使用.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
    

    【讨论】:

      【解决方案2】:

      您可以使用applylen 函数应用于每一列:

      df['EventItem'].apply(len)
      
      0    2
      1    1
      2    3
      Name: EventItem, dtype: int64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-01
        • 2021-08-16
        • 2021-08-07
        • 1970-01-01
        • 2014-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多