python - 在python中切片不是NaN值
问题描述
我是 python 新手,希望能得到一些帮助!我有一个名为 result 的数据框,格式如下:
start end rf1 rf2 rf3
01-01-2008 10-01-2008 nan 12 nan
02-01-2008 11-01-2008 nan 16 nan
03-01-2008 12-01-2008 32 18 18
我想要每行中不是 NaN 的那些 rf 的列表。请注意,我的前两列不是索引。我尝试了下面的代码,但无法得到我的答案:
result_2=result.dropna(axis=1,how='all')
基本上我想要一个 rfs 不是 NaN 的日期列表。对于第一行中的 ex,我的输出应该给我开始日期、结束日期和 'rf2',同样在最后一行,我的输出应该给我开始日期、结束日期、'rf1'、'rf2'、'rf3'
解决方案
您可以使用 IIUCstack
过滤rfX
列、groupby
索引并从结果组中构建列表:
df.filter(regex=r'rf\d').stack().groupby(level=0).agg(list)
0 [12.0]
1 [16.0]
2 [32.0, 18.0, 18.0]
dtype: object
或使用列表推导:
[[i for i in row if i==i] for row in df.filter(regex=r'rf\d').values.tolist()]
[[12.0], [16.0], [32.0, 18.0, 18.0]]
或者如果您需要列名。
df['vals'] = df.filter(regex=r'rf\d').stack().reset_index(level=1)\
.groupby(level=0).level_1.agg(list)
print(df)
start end rf1 rf2 rf3 vals
0 2008-01-01 2008-10-01 NaN 12 NaN [rf2]
1 2008-02-01 2008-11-01 NaN 16 NaN [rf2]
2 2008-03-01 2008-12-01 32.0 18 18.0 [rf1, rf2, rf3]
推荐阅读
- java - 尽管配置正确且日志中没有错误消息,但 Hibernate 未创建表
- django - Heroku 在使用 Procfile 运行 Django 时返回 desc="No web processes running"?
- c# - 返回 View("viewname", model) 时视图不呈现
- git - Git 推送错误 RPC 失败 curl 52 GnuTLS recv 错误 (-110)
- android - 我无法导入 PhotoView。我该怎么办?
- inheritance - 领域驱动设计 - 继承指南
- android - 选项卡布局或底部导航视图的所有片段的通用搜索视图?
- python - 在不同的结束目录创建文件夹
- python - 将文本拆分为相似的块,但仅在“/>”之后
- angular - 路由器插座内未知的角度组件