python - 规范化/调整时间序列数据框
问题描述
我对 Python 和 Pandas 还很陌生;几天来一直在寻找解决方案,但没有运气......这是问题所在:
我有一个如下所示的数据集,我需要剔除某些行的前几个值,因此每行中的最大值位于 A 列中。在下面的示例中,第 0 行和第 3 行将删除 A 列和行中的值4 删除 A 列和 B 列中的值,然后将所有剩余值向左移动。
A B C D
0 11 23 21 14
1 24 18 17 15
2 22 18 15 13
3 10 13 12 10
4 5 7 14 11
期望的
A B C D
0 23 21 14 NaN
1 24 18 17 15
2 22 18 15 13
3 13 12 10 NaN
4 14 11 NaN NaN
我查看了 df.shift(),但看不到如何让该函数在唯一的逐行基础上工作。我应该改用数组和循环函数吗?
任何帮助是极大的赞赏。
解决方案
您需要将最大值的所有左侧值转换为np.nan
并使用此问题中的解决方案。我使用来自@cs95 的那个
df_final = df[df.eq(df.max(1), axis=0).cummax(1)].apply(lambda x: sorted(x, key=pd.isnull), 1)
A B C D
0 23.0 21.0 14.0 NaN
1 24.0 18.0 17.0 15.0
2 22.0 18.0 15.0 13.0
3 13.0 12.0 10.0 NaN
4 14.0 11.0 NaN NaN
推荐阅读
- encryption - 从 Java 到 C# 的 RSA 签名端口
- r - 如何将数据框的列类型定义为日期?
- python - 使用 AIC 进行变量选择并评估多元回归中的标准
- php - 用于搜索相似文件名的 PHP glob 函数
- reactjs - 如果在我的回调函数完成之前执行语句,这使得 react-router-dom 无法重定向
- jquery - 隐藏包装视频结束时
- c++ - boost 1.71.0 是否支持 C++03?
- c# - Unity3D:Application.internetReachability 始终返回为 NotReachable
- php - 使用 Ajax 更改 WordPress 页面上的简码 ID
- codeigniter - 将不存在的 url 重定向到 Codeigniter 中的主页