python - 根据数据框上的值创建一个新列 - Pandas
问题描述
我有一个看起来像这样的数据框:
orderID m1 m2 m3
1 2020-03-04 2020-03-04 NaT
2 2020-03-08 NaT NaT
我想创建一个新列,显示可用于订单的最新里程碑 (mn)。
输出看起来像这样
orderID m1 m2 m3 last_m_available
1 2020-03-04 2020-03-04 NaT m2
2 2020-03-08 NaT NaT m1
我将如何用 python 做到这一点?
解决方案
您可以交换列的顺序,测试不缺失值并使用DataFrame.idxmax
:
#if orderID is not index
df = df.set_index('orderID')
df = df.apply(pd.to_datetime)
df['last_m_available'] = df.iloc[:, ::-1].notna().idxmax(axis=1)
print (df)
m1 m2 m3 last_m_available
orderID
1 2020-03-04 2020-03-04 NaT m2
2 2020-03-08 NaT NaT m1
如果可能的话,一些只有缺失值的行:
df = df.apply(pd.to_datetime)
mask = df.iloc[:, ::-1].notna()
df['last_m_available'] = np.where(mask.any(axis=1), mask.idxmax(axis=1), np.nan)
print (df)
m1 m2 m3 last_m_available
orderID
1 2020-03-04 2020-03-04 NaT m2
2 NaT NaT NaT NaN
推荐阅读
- c# - FireSharp QueryBuilder 返回 null
- java - java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 FloatingActionButton.setImageResource(int)'
- python - 如何向新网址发出请求?
- angular - 如何在离子框架中应用表 ion-col 中的列表重新排序
- javascript - PreOrder Traversal Iterativ vs Recursive Time Complexity
- python - Python - 从条形图中保存颜色,类似于折线图的 get_color()
- kubernetes - 一旦设置了 kubernetes cpu 限制,容器是否会超过设置的限制
- sql - 错误的 SQL 查询
- django - Django - 将 PDF 和 Excel 文件上传到 mysql 数据库
- sql - SQL查询where子句返回行不存在