【问题标题】:How to get rid of small space between numbers in list?如何摆脱列表中数字之间的小空间?
【发布时间】:2021-01-13 19:51:07
【问题描述】:

我对数据框进行了分组,如图所示,我注意到数字之间有一个小空格。这是正常的吗?我需要摆脱它还是它不会影响任何东西?

Photo of dataframe

更新:我尝试了 .str.strip() 方法,但路径列中的所有内容都变成了 NaN

更新:这是我尝试打印选项时得到的结果:

enter image description here

【问题讨论】:

    标签: python pandas list whitespace


    【解决方案1】:

    这是正常的,它不会影响你想要做的任何计算,虽然我没有遇到这样的错误,它似乎只是一个可视化的东西,不过,如果你想确保没有列表中的任何空格,您都可以在此特定代码行中进行以下更改。

    df1 = df.groupby('jid').aggregate({'conversion': 'sum', 'path': lambda x: [int(n) for n in x.tolist()]}).reset_index()
    

    这是一种非常幼稚的方法,欢迎提出任何建议。

    编辑:
    我之前的建议实际上是错误的,试试这段代码,它没有做任何特别的事情,只是迭代由.tolist() 方法生成的列表并将它们转换为整数,这样可以确保不会有任何空格

    【讨论】:

    • 不幸的是,我收到 AttributeError 的属性错误:'list' object has no attribute 'split'
    【解决方案2】:

    在 lambda 函数中使用 Series.str.strip

    df1 = (df.groupby('jid').agg({'conversion':'sum', 'path': lambda x: x.str.strip().tolist()})
            .reset_index())
    

    或在groupby 之前通过DataFrame.assign 重新计算值:

    df1 = (df.assign(path = df['path'].str.strip()).groupby('jid')
             .agg({'conversion': 'sum', 'path': lambda x: x.tolist()})
             .reset_index())
    

    示例

    df = pd.DataFrame({
             'path':[' 1','3','5' ,' 7 ','1',' 0'],
             'conversion':[5,3,6,9,2,4],
             'jid':list('aaabbb')
    })
    
    df1 = (df.groupby('jid').agg({'conversion':'sum', 'path': lambda x: x.str.strip().tolist()})
            .reset_index())
    print (df1)
      jid  conversion       path
    0   a          14  [1, 3, 5]
    1   b          15  [7, 1, 0]
    
    df1 = (df.assign(path = df['path'].str.strip()).groupby('jid')
             .agg({'conversion': 'sum', 'path': lambda x: x.tolist()})
             .reset_index())
    print (df1)
      jid  conversion       path
    0   a          14  [1, 3, 5]
    1   b          15  [7, 1, 0]
    

    原文:

    df1 = (df.groupby('jid')
             .agg({'conversion': 'sum', 'path': lambda x: x.tolist()})
             .reset_index())
    print (df1)
      jid  conversion          path
    0   a          14    [ 1, 3, 5]
    1   b          15  [ 7 , 1,  0]
    

    【讨论】:

    • 非常感谢您的快速回复!最后还是和空白一样。所以也许 Shaikh 是正确的,它只是一个视觉上的东西,不会影响我创建模型时。
    • @Rickboekhoudt - 这很容易测试,尝试print(df['path'].tolist()) 检查是否有空格
    • 是的,我试过了,对我来说,逗号后面好像有空格。我在更新中添加了一张照片
    • @Rickboekhoudt - 是的,我在你的照片中也看到了。所以我的解决方案没有区别?
    猜你喜欢
    • 2015-01-08
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多