【问题标题】:Looping itertuples() in python with row condition在具有行条件的python中循环itertuples()
【发布时间】: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.dtypesuser.info()user["isorg"].dtype

标签: python pandas


【解决方案1】:

试试下面的

for row in df[df['isorg']==0].itertuples():

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 2018-09-19
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 2011-05-18
    • 2017-07-11
    相关资源
    最近更新 更多