Python 通过最后一个非NAN值的数据帧行的条件循环
我是python新手:) 我有以下dataframe,有些列没有标题: 我试着为每个名字做一些基本的条件:比如晚餐上印着“晚上好” 到目前为止,我所做的是为每行查找最后一个非NAN值:Python 通过最后一个非NAN值的数据帧行的条件循环,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我是python新手:) 我有以下dataframe,有些列没有标题: 我试着为每个名字做一些基本的条件:比如晚餐上印着“晚上好” 到目前为止,我所做的是为每行查找最后一个非NAN值: df.ffill(axis=1).iloc[:, -1] 结果: 0 dinner 1 lunch 2 dinner 3 lunch 4 breakfast 5 lunch 6 lunch 7 dinner Na
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 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
感谢帮助也是一个选项:
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)
晚上好,莎拉
晚上好,雷蒙
晚上好,阿尔伯
或创建一个新系列:
m = df.apply(lambda s: s[s.last_valid_index()], axis=1).eq('dinner')
print('Good evening ' + df.loc[m, 'Name'])
0晚上好Sara
晚上好,雷蒙
晚上好,阿尔伯
名称:名称,数据类型:对象
您能创建生成输入数据框的代码吗?顺便说一句,数据框对于您的任务来说似乎不是一个好的数据结构。简单的词典会更简单、更直观。相关: