python - 返回新列中每一行中第一个匹配值的列名
问题描述
我有一个数据框,其中第一列是 ID,其他列是日期。每个 ID 可能在几列中显示相同的内容,可能有一些前导 NaN 列,或者可能有所有 NaN 列。我想使用首次出现特定条目的列的名称创建一个新列。
样本df:
| id_report | req id | 1-Jan | 2-Jan | 3-Jan | 4-Jan |
| --------- | -------------- | ----- | ----- | ----- | ----- |
| 0 | 12345 | NaN | Pend | Pend | Appr |
| 1 | 12346 | NaN | NaN | NaN | NaN |
| 2 | 12347 | NaN | NaN | Pend | Pend |
| 3 | 12348 | NaN | NaN | NaN | Appr |
我已经搜索并想出了:
id_report["Pend"] = id_report.apply(lambda x: x == "Pend", axis = 1).idxmax(axis = 1)
但这会为没有出现“Pend”的每一行返回“req id”,我想将这些位置保留为空。
期望的输出:
id_report | 请求编号 | 1-1月 | 1月2日 | 1月3日 | 1 月 4 日 | 挂起 |
---|---|---|---|---|---|---|
0 | 12345 | 钠 | 挂起 | 挂起 | 应用程序 | 1月2日 |
1 | 12346 | 钠 | 钠 | 钠 | 钠 | 钠 |
2 | 12347 | 钠 | 钠 | 挂起 | 挂起 | 1月3日 |
3 | 12348 | 钠 | 钠 | 钠 | 应用程序 | 钠 |
解决方案
推荐阅读
- python - 如何处理熊猫数据框中的缺失数据?
- settings - CLion 方法签名没有提示
- java - 使用 BulkWrite (DeleteManyModel) 删除 100 万条记录需要更长的时间
- math - 如何识别右手和左手手势张量流
- javascript - 如何使用可移动文本和徽标更新threejs纹理
- react-native - 从对象 React Native 中获取特定属性
- reactjs - 在反应中更新对象状态的正确方法(合并状态?传播运算符?)
- python - 使用 BayesSearchCV 时如何提取最佳特征?
- javascript - 在 GEE 中导出图像时没有显示错误但有一行像素错误
- android - 如何在真实设备上配置 Android zScaler Client Connector VPN