python - 用一行中的项目数转换新列
问题描述
我有一个数据框,其中的项目用逗号分隔。我想用一行中每个项目的计数来转换一个新列。
df = pd.DataFrame({'A' : [['one', 'two', 'three' ],
['four', 'five', 'six', 'seven']
]})
对于第一行,我想返回 3,接下来的 4 并转换一个新列。我试过:
df.A[0].count(',') + 1
那会给我第一行的计数,但是如何用计数转换新列?
解决方案
您需要做的实际上是创建一个您想要的值列表,并将其分配给这个新列。
这可以使用这样的列表理解来完成:
# This will assign the lengths of the lists to a column called 'count'
df['count'] = [len(l) for l in df['A']]
您也可以使用 pandas 自己的apply
方法,或者直接对 Series:
df['count'] = df['A'].apply(lambda x: len(x))
或应用于整行,如果需要,这将允许您访问其他列的值:
df['count'] = df.apply(lambda x: len(x['A']), axis=1)
当您的尝试显示您计算逗号时,我假设列中的值是字符串,而不是列表。我会检查这是否是预期的行为,如果不是,则将字符串转换为列表。如果您只想计算逗号,您可以像这样应用您的方法:
df['count'] = df.apply(lambda x: x.A.count(',') + 1, axis=1)
推荐阅读
- c# - 如何解决 SqlNullValueException?
- google-cloud-platform - 是否可以将 Cloud Dataflow 连接到不同区域的 Compute Engine?
- html - 从联系表格 7 发送邮件不起作用
- .htaccess - 如果 url 包含某些参数,则使用 .htaccess 重定向站点
- c++ - imshow 函数中的分段错误。Opencv 版本是 2.4.9.1
- ios - 如何使用 Swift 显示自定义注释,即使它位于用户的当前位置
- python - python中的素数代码如何工作?
- python - 如何使用 Lambda 函数将输出写入 S3 存储桶的文件夹中
- scala - 使用“shc-core: 1.1.1-2.1-s_2.11”将 Hbase 与 AWS EMR (emr-5.28.1) 集群上的 Spark 连接的问题
- c# - KeyDerivation.Pbkdf2 和 Rfc2898DeriveBytes 有什么区别?