【发布时间】:2020-06-22 22:58:54
【问题描述】:
在 python pandas 数据框“用户”中,我有以下两列:
user_id | isorg
1 | 1
2 | 0
3 | 3
4 | 0
5 | 0
我想要只有 isorg == 0 的 itertuples() user_id,所以我写了
for row in user.itertuples():
if row.isorg == 0: continue
#action
但我得到这样的错误
`---------------------------------------------- ----------------------------------------- ValueError Traceback(最近一次调用 最后)在() 1 代表 user.itertuples() 中的行: ----> 2 如果 row.isorg == 0:继续 3 org = pd.DataFrame(m3twitter.infer_id(row.user_id)) 4 isorg = pd.DataFrame.from_dict(org.output.org, orient='index').T 5 isorg = pd.concat([isorg['is-org'].apply(pd.Series)])
/usr/local/lib/python3.6/dist-packages/pandas/core/generic.py nonzero(self) 1553 “{0} 的真值不明确。” 1554 “使用 a.empty, a.bool(), a.item(), a.any() 或 a.all().".format( -> 1555 self.class.name 1556 ) 1557 )
ValueError:DataFrame 的真值不明确。使用a.empty, a.bool()、a.item()、a.any() 或 a.all()。`
如何获得正确的代码?我是python的新手。
【问题讨论】:
-
您能展示一下
user数据框是如何构建的吗?我无法重现错误。 -
path = r'/content/gdrive/My Drive/Data/' all_files = glob.glob(path + "/*.csv") li = [] for filename in all_files: df = pd .read_csv(filename, delimiter=';', engine='python',usecols=['user_id']).drop_duplicates(keep='first').reset_index() li.append(df) user = pd.concat( li,axis=0,ignore_index=True)
-
你能把
print(user.to_dict())的结果贴在这里吗? -
@ferhen 他在那个
read_csv()呼叫中有drop_duplicates()(在cmets 中)。你觉得他应该试试.dropna()吗? -
@AanAndriatno 试试
user.dtypes或user.info()或user["isorg"].dtype