有没有办法在 Pandas 中删除_in place_重复列_names_?

问题描述 投票:0回答:1

这个问题的重点是单词namesin place,因为我想删除具有相同名称的列(无论值如何),但我不想删除具有相同值但名称不同的列,我想高效地完成它。

换句话说,我正在寻找 df = df.loc[:, ~df.columns.duplicated()]

in place
版本,以避免数据帧的临时副本。

import pandas as pd
df = pd.DataFrame([[0, 1, 2, 0, 0],[1, 2, 3, 1, 1], [2, 3, 4, 2, 2]], columns=iter('ABCAD'))

# expected result
print(df.loc[:, ~df.columns.duplicated()])

其基本原理是清理大型数据帧。

python pandas dataframe
1个回答
0
投票

这不应该是 copy-on-Write 机制的问题,该机制只会在分配数据时进行复制(将是 pandas 3 中的默认设置)。

如果您确实想要解决方法,您始终可以

rename
将列放置到位,然后再将“重复项”放置到位:

old_cols = df.columns
new_cols = pd.io.common.dedup_names(df.columns, False)
df = df.set_axis(new_cols, axis=1, copy=False)
df.drop(columns=old_cols.symmetric_difference(new_cols), inplace=True)
© www.soinside.com 2019 - 2024. All rights reserved.