为了账号安全,请及时绑定邮箱和手机立即绑定

系列的真值不明确

系列的真值不明确

梵蒂冈之花 2023-12-12 15:03:57
我不完全确定如何解决问题,但这是我遇到的一个问题:for row in concat_data.index:    if (concat_data['% interest'][row]).str.contains('%'):     concat_data['% interest'] = concat_data['% interest'].str.split('%', expand=True)concat_data 是我的数据框,我想迭代“%interest”列的每一行,如果在该单元格中找到它,则在“%”处拆分。错误信息是:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().我尝试过使用 .any(),但它也不起作用。我添加了一个print(concat_data['% interest'][row]),它说这是一个系列。任何帮助将不胜感激,谢谢!
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

我认为您根本不需要使用 if 语句,也不需要使用数据帧的迭代。split 方法将获取第一次出现 '%' 之前的所有内容,并且如果它首先不包含 '%',则保持该值不变。

所以基本上只需这样做:

concat_data['% interest'] = concat_data['% interest'].str.split('%', expand=True)

假设您的数据看起来像“50.6%”。查看您的数据样本会很有帮助。


查看完整回答
反对 回复 2023-12-12
?
GCT1015

TA贡献1827条经验 获得超4个赞

数据

这就是该列的样子,我的代码应该忽略“0.005”之类的单元格,并将“7.75% (1M L+675, 1.00%”) 之类的单元格拆分为“7.75%”。

再次感谢。


查看完整回答
反对 回复 2023-12-12
?
潇湘沐

TA贡献1816条经验 获得超6个赞

这里有一些选项...如果您想对数据帧的每一行执行与您的条件匹配的操作,您可以:


concat_data = pd.DataFrame(data=['5.3','5.3%','5.3%APR'],columns=['% interest'])

for row in concat_data.index:

    if '%' in concat_data['% interest'][row]:

        concat_data['% interest'][row] = concat_data['% interest'][row].split('%')

这正确地使用了“if”语句,因为它一次仅对一个值进行操作。


或者您可以使用列表理解更新列:


concat_data['% interest'] = [x.split('%') if '%' in x else x for x in concat_data['% interest']]



查看完整回答
反对 回复 2023-12-12
  • 3 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信