如何解决具有最后一个非 NAN 值的数据帧行的条件循环
我是 Python 新手 :)
我正在尝试为每个名字设置非常基本的条件:就像晚餐打印“晚安”一样。
到目前为止我所做的是试图找到每一行的最后一个非 NAN 值:
df.ffill(axis=1).iloc[:,-1]
结果:
0 dinner
1 lunch
2 dinner
3 lunch
4 breakfast
5 lunch
6 lunch
7 dinner
Name: Unnamed: 11,dtype: object
然后尝试使用 for 执行条件:
for index,column in df.iterrows():
if df.ffill(axis=1).iloc[:,-1] == "dinner":
print ("Good evening",column['Name'])
我收到此错误:
The truth value of a Series is ambiguous. Use a.empty,a.bool(),a.item(),a.any() or a.all().
然后我尝试了:
for i in df.ffill(axis=1).iloc[:,-1]:
if i == "dinner":
print ("Good evening",column['Name'])
但条件并没有按预期工作!
Good evening Sara
Good evening Sara
Good evening Sara
感谢帮助
解决方法
last_valid_index 也是一个选项:
m = df.apply(lambda s: s[s.last_valid_index()],axis=1).eq('dinner')
for name in df.loc[m,'Name']:
print('Good evening',name)
Good evening Sara
Good evening Remon
Good evening Alber
或创建一个新系列:
m = df.apply(lambda s: s[s.last_valid_index()],axis=1).eq('dinner')
print('Good evening ' + df.loc[m,'Name'])
0 Good evening Sara
2 Good evening Remon
3 Good evening Alber
Name: Name,dtype: object
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。