首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“串联”对象没有属性“len”Panda CSV文件

“串联”对象没有属性“len”Panda CSV文件
EN

Stack Overflow用户
提问于 2020-02-29 01:10:49
回答 1查看 5.5K关注 0票数 1

我想要根据包含字符数的列打印。在该特定列中包含不同长度的字符串。我目前的代码如下;

代码语言:javascript
运行
复制
  if df['UDH'].len(8):
    df=df.groupby(df[['UDH'].str[:7],'Original Sender ID','Received Date/Time'])['Body'].apply(' '.join).reset_index()
    if df['UDH'].len(9):
        df=df.groupby(df[['UDH'].str[:8],'Original Sender ID','Received Date/Time'])['Body'].apply(' '.join).reset_index()
        if df['UDH'].len(10):
            df=df.groupby(df[['UDH'].str[:9],'Original Sender ID','Received Date/Time'])['Body'].apply(' '.join).reset_index()
            if df['UDH'].len(11):
                df=df.groupby(df[['UDH'].str[:10],'Original Sender ID','Received Date/Time'])['Body'].apply(' '.join).reset_index()
                if df['UDH'].len(12):
                    df=df.groupby(df[['UDH'].str[:11],'Original Sender ID','Received Date/Time'])['Body'].apply(' '.join).reset_index()

我的csv文件包含列体、接收日期/时间、原始发件人ID和UDH。

现在UDH是主键。连接主体的方法是按接收日期/时间、原始发送方ID和UDH进行分组。然而,UDH有些只有8个字符长,有些只有12个字符长。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 01:51:03

这里有两个问题需要解决。比较容易的是如何检查列中字符串的长度。正确的语法是df['UDH'].str.len() == 8。但是,这种比较不会返回一个简单的bool值,我们可以在if语句中使用这个值:它返回一系列bools,告诉我们列中每个元素的字符串长度是否为8。因此,if语句是使用的错误工具。

相反,我们可以使用布尔序列作为索引,将数据分解为行子集。这将返回一个仅包含df行的数据,其中df['UDH']等于8:

代码语言:javascript
运行
复制
rows_of_length_8 = df[df['UDH'].str.len() == 8]

还请注意,没有必要重复相同的逻辑这么多次。您可以使用循环:

代码语言:javascript
运行
复制
for i in range(8, 12+1):
    rows_of_length_i = df[df['UDH'].str.len() == i]

并在groupby中使用i-1作为切片参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60461130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档