pandas - 如何删除熊猫中具有重复名称的列但保留其中具有最大值的列?
问题描述
我有下面的熊猫数据框,我只需要保留一个包含最大元素的日期列并消除休息:
date value_1 date value_2 date value_3
01-01-1990 1 01-01-1990 2 01-01-1990 4
02-01-1990 3 02-01-1990 20
03-01-1990 30
输出
date value_1 value_2 value_3
01-01-1990 1 2 4
02-01-1990 3 20
03-01-1990 30
.T.drop_duplicates 不起作用。
df = df.loc[:,~df.columns.duplicated()]
保留第一个日期列
解决方案
利用:
df1 = df.loc[:,df.columns.duplicated(keep=False)]
idx = np.argmax(df1.count().values)
df = df.loc[:,~df.columns.duplicated()].assign(date=df1.iloc[:, idx])
print (df)
date value_1 value_2 value_3
0 01-01-1990 1.0 2 4.0
1 02-01-1990 3.0 20 NaN
2 03-01-1990 NaN 30 NaN
详情:
首先过滤重复的date
列:
df1 = df['date']
print (df1)
date date date
0 01-01-1990 01-01-1990 01-01-1990
1 02-01-1990 02-01-1990 NaN
2 NaN 03-01-1990 NaN
通过以下方式获取非 NaN 值的数量DataFrame.count
:
print (df1.count())
date 2
date 3
date 1
dtype: int64
列名相同,因此np.argmax
用于位置:
print (df1.count().values)
[2 3 1]
idx = np.argmax(df1.count().values)
print (idx)
1
最后选择iloc
:
print (df1.iloc[:, idx])
0 01-01-1990
1 02-01-1990
2 03-01-1990
Name: date, dtype: object
推荐阅读
- python - RuntimeError:cuDNN 错误:CUDNN_STATUS_NOT_INITIALIZED
- pandas - 熊猫 .plot.hist() 和 .groupby()
- lua - Roblox 臀高脚本仅适用于某些玩家
- windows-server - Windows Server 无头安装无法管理 COM+ 组件
- python - 从列表中删除重复项而不使列表索引超出范围
- flask-sqlalchemy - 如何在 Heroku postgreSQL 数据库中为烧瓶应用程序设置表/行
- scala - 在加特林中将特定值从馈线传递到脚本
- ubuntu - 主节点的硬件是否应该与 Kubernetes 设置的工作节点的硬件相同?
- python - 如何在 seaborn 中将 matplotlib 颜色图设置为调色板
- python - 访问python中继承类中的私有属性