mei825423531 发表于 2022-7-1 02:54:31

df 二维表取某列值依次判断出错


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

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

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


#出错信息
Traceback (most recent call last):
File "/Users/benny/Documents/pandas/test.py", line 64, in <module>
    if df9['状态'].at == '已签收':
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

Twilight6 发表于 2022-7-1 09:04:32


print(df9['状态'].at)

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

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

a.empty, a.bool(), a.item(), a.any() or a.all() 来与 "已签收" 进行比较

mei825423531 发表于 2022-7-1 09:21:06

我知道了谢谢。实为 df9 = pd.concat(df7,df8),concat后 未对 index 索引列 进行重新排序,导致索引列中有两个 index =0 .
以索引取值,print(df9['状态'].at),就会有两个 index = 0
用坐标取值 print(df9.iloc['状态']) 问题就解决了。

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

进程已结束,退出代码0
页: [1]
查看完整版本: df 二维表取某列值依次判断出错