鱼C论坛

 找回密码
 立即注册
查看: 1810|回复: 2

[已解决]df 二维表取某列值依次判断出错

[复制链接]
发表于 2022-7-1 02:54:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

新手求助,困扰好几天也没找到解决方案。。。

1)为什么 print(df9['状态'].at[0])会出现两行‘已签收’数据?
2)df9 是一个大的二位数据表,df9['状态'] 包含 ['已签收','未签收']
需要逐行判断df['状态']列

# 代码
print(df9['状态'].at[0])
if df9['状态'].at[0] == '已签收':
    print(1)
else:
    print(0)


#出错信息
Traceback (most recent call last):
  File "/Users/benny/Documents/pandas/test.py", line 64, in <module>
    if df9['状态'].at[0] == '已签收':
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pandas/core/generic.py", line 1527, in __nonzero__
    raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
0    已签收
0    已签收
Name: 状态, dtype: object

进程已结束,退出代码1
最佳答案
2022-7-1 09:04:32
print(df9['状态'].at[0])

结果:
0    已签收
0    已签收
Name: 状态, dtype: object


你打印那明显有两个元素,而你直接想用一个维度大和判断一个 "已签收" 导致报错,所以代码提示你使用

a.empty, a.bool(), a.item(), a.any() or a.all() 来与 "已签收" 进行比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-1 09:04:32 | 显示全部楼层    本楼为最佳答案   
print(df9['状态'].at[0])

结果:
0    已签收
0    已签收
Name: 状态, dtype: object


你打印那明显有两个元素,而你直接想用一个维度大和判断一个 "已签收" 导致报错,所以代码提示你使用

a.empty, a.bool(), a.item(), a.any() or a.all() 来与 "已签收" 进行比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-1 09:21:06 | 显示全部楼层
我知道了谢谢。实为 df9 = pd.concat(df7,df8),concat后 未对 index 索引列 进行重新排序,导致索引列中有两个 index =0 .
以索引取值,print(df9['状态'].at[0]),就会有两个 index = 0
用坐标取值 print(df9.iloc[0]['状态']) 问题就解决了。

print(df9.iloc[0]['状态'])
if df9.iloc[0]['状态'] == '已签收':
    print(1)
else:
    print(0)
--------------------------------------------------------------------------------------------
/usr/local/bin/python3.10 /Users/benny/Documents/pandas/test.py
已签收
1

进程已结束,退出代码0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 10:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表