微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有最后一个非 NAN 值的数据帧行的条件循环

如何解决具有最后一个非 NAN 值的数据帧行的条件循环

我是 Python 新手 :)

我有以下数据框,有些列没有标题

enter image description here

我正在尝试为每个名字设置非常基本的条件:就像晚餐打印“晚安”一样。

到目前为止我所做的是试图找到每一行的最后一个非 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?