python pandas 删除重复的列

2024-03-14

从数据框中删除重复列的最简单方法是什么?

我正在通过以下方式读取具有重复列的文本文件:

import pandas as pd

df=pd.read_table(fname)

列名称是:

Time, Time Relative, N2, Time, Time Relative, H2, etc...

所有“时间”和“时间相对”列都包含相同的数据。我想:

Time, Time Relative, N2, H2

我所有尝试删除、删除等,例如:

df=df.T.drop_duplicates().T

导致唯一值索引错误:

Reindexing only valid with uniquely valued index objects

抱歉,我是一个 Pandas 菜鸟。任何建议,将不胜感激。


额外细节

熊猫版本:0.9.0
Python版本:2.7.3
Windows 7的
(通过Pythonxy 2.7.3.0安装)

数据文件(注意:在真实文件中,列之间用制表符分隔,这里用4个空格分隔):

Time    Time Relative [s]    N2[%]    Time    Time Relative [s]    H2[ppm]
2/12/2013 9:20:55 AM    6.177    9.99268e+001    2/12/2013 9:20:55 AM    6.177    3.216293e-005    
2/12/2013 9:21:06 AM    17.689    9.99296e+001    2/12/2013 9:21:06 AM    17.689    3.841667e-005    
2/12/2013 9:21:18 AM    29.186    9.992954e+001    2/12/2013 9:21:18 AM    29.186    3.880365e-005    
... etc ...
2/12/2013 2:12:44 PM    17515.269    9.991756+001    2/12/2013 2:12:44 PM    17515.269    2.800279e-005    
2/12/2013 2:12:55 PM    17526.769    9.991754e+001    2/12/2013 2:12:55 PM    17526.769    2.880386e-005
2/12/2013 2:13:07 PM    17538.273    9.991797e+001    2/12/2013 2:13:07 PM    17538.273    3.131447e-005

这是一个基于重复项删除列的单行解决方案列名:

df = df.loc[:,~df.columns.duplicated()].copy()

怎么运行的:

假设数据框的列是['alpha','beta','alpha']

df.columns.duplicated()返回一个布尔数组:aTrue or False对于每一列。如果是False那么到那时为止,列名是唯一的,如果是True那么列名会先重复。例如,使用给定的示例,返回值将是[False,False,True].

Pandas允许使用布尔值进行索引,从而仅选择True价值观。由于我们想要保留不重复的列,因此我们需要翻转上面的布尔数组(即[True, True, False] = ~[False,False,True])

最后,df.loc[:,[True,True,False]]使用上述索引功能仅选择非重复列。

决赛.copy()是否可以复制数据帧(主要是)避免稍后尝试修改现有数据帧时出现错误。

Note:上面仅检查列名称,not列值。

删除重复索引

由于它足够相似,因此对索引执行相同的操作:

df = df.loc[~df.index.duplicated(),:].copy()

通过检查值而不转置来删除重复项

更新和警告: 请谨慎使用。根据 DrWhat 在评论中提供的反例,该解决方案可能not在所有情况下都能达到预期的结果。

df = df.loc[:,~df.apply(lambda x: x.duplicated(),axis=1).all()].copy()

这避免了转置的问题。快吗?不,有效果吗?在某些情况下。在这里,尝试一下:

# create a large(ish) dataframe
ldf = pd.DataFrame(np.random.randint(0,100,size= (736334,1312))) 


#to see size in gigs
#ldf.memory_usage().sum()/1e9 #it's about 3 gigs

# duplicate a column
ldf.loc[:,'dup'] = ldf.loc[:,101]

# take out duplicated columns by values
ldf = ldf.loc[:,~ldf.apply(lambda x: x.duplicated(),axis=1).all()].copy()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python pandas 删除重复的列 的相关文章

随机推荐

  • 在哪里可以找到详尽的停用词列表?

    我在哪里可以找到详尽的停用词列表 我的那篇文章很短 似乎不适用于科学文本 我正在创建词汇链以从科学论文中提取关键主题 问题是像这样的词based regarding等也应被视为停用词 因为它们没有太多意义 您还可以轻松添加到现有的停用词列表
  • Xcode 8 内存图显示“无选择”且无法工作

    我正在使用 Xcode 8 0 和 Swift3 处理一个项目 我想使用内存图调试器 但它什么也没显示 预期外观 来自教程 为什么我不能使用这个功能 该项目是使用 Xcode 8 创建的 不是从旧版本的 Xcode 迁移的 bitcode与
  • protractor 2.5.4 E/launcher - 会话未创建:此版本的 ChromeDriver 仅支持 Chrome 版本 79

    我进行了大量研究并使用了各个论坛中提到的许多可能的解决方案 但没有一个对我有用 我试图在 CI CD 管道中运行它 尽管能够在本地运行量角器测试用例并能够启动浏览器 但在 CI CD 管道构建中它失败了 详细信息如下 我在 package
  • 更改已验证应用程序的应用程序名称 - Google OAuth 同意屏幕

    我有一个经过验证的应用程序 我想更改 OAuth 同意屏幕应用程序名称 仅应用程序名称 为了做到这一点 似乎我需要再次重新验证这一点 但我的应用程序现在已经在生产中 如果我提交它进行验证 当前已验证的 OAuth 屏幕是否会突然显示为未验证
  • Python 正则表达式的 unicode 文本中使用的字边界

    我想在正则表达式中使用单词边界来匹配一些 unicode 文本 Unicode 字母在 Python 正则表达式中被检测为单词边界 如下所示 gt gt gt re search r by b y lt sre SRE Match obje
  • 如何正确卸载python jupyter?

    I have jupyter安装有python3 5 on my Mac OSX 但我想要python2 7版本 所以 我基本上需要卸载3 5版本 然后重新安装2 7版本 但由于某种原因我无法卸载3 5版本 我试过sudo python3
  • Python中使用行数作为输入变量分割大文本文件的快速方法

    我使用行数作为变量来分割文本文件 我编写这个函数是为了将吐出的文件保存在临时目录中 除最后一个文件外 每个文件有 4 百万行 import tempfile from itertools import groupby count temp
  • 如何避免 AS3 代码混乱

    我使用 ActionScript 3 进行编程已经有一段时间了 我注意到我的代码的自然进展似乎采用一个巨大的文档类的形式 其中包含数十个成员变量 回调和舞台上对象的句柄 简而言之 有点乱 问题是 我真的没有找到解决办法 至少目前还没有 我在
  • 不使用提交按钮提交表单

    我正在使用表单提交数据以从数据库中获取记录 在表单中 我使用两个选择标签选项 因此 选择选项后 表单应提交不使用提交按钮 我正在等待选择输入后提交表单的响应 而不使用它应该自动提交的提交按钮 或任何按钮 创建一个函数来检查您想要的所有内容是
  • 在java中连接两个json对象

    我想连接多个 json 对象 我有两个像这样的json message test status 0 and this message test 2 status 1 结果必须是 message test status 0 message t
  • Kotlin 多平台“转到声明”转到反编译代码

    当使用 Android Studio 的 转到声明 功能 cmd 单击 时 尽管源位于我的项目中 但会显示反编译的源 kotlin MP 源位于另一个模块中 我可以使用 选择源 选项连接源 但是我必须对每个文件执行此操作 是否有用于连接到正
  • Azure B2C 问题和疑问

    我已经使用 Azure B2C 几天了 有一些问题和疑问 它创建的用于重定向登录的 URL 格式不正确 它包含两次问号 在网址之后 在配置文件名称之后再次 这会在您每次登录 注销等时导致 404 未找到错误 例如 它尝试重定向到的登录 UR
  • C# 空条件运算符和等待错误

    在 C 中使用新的 null 条件运算符时 我遇到了一个有趣的 System NullReferenceException 如果 MyObject 为 null 以下代码将给出 NullReferenceException await th
  • 如何从我的 MySQL 表中删除约束?

    我想从我的表中删除约束 我的查询是 ALTER TABLE tbl magazine issue DROP CONSTRAINT FK tbl magazine issue mst users 但我收到一个错误 1064 您的 SQL 语法
  • 从 RGB 整数转换为十六进制

    我拥有的是 R 255 G 181 B 178 我正在 C 中工作 对于 WP8 更具体地说 我想将其转换为十六进制数字以用作颜色 以设置 WriteableBitmap 的像素颜色 我正在做的事情如下 int hex 255 lt lt
  • 调整绘图标题(主要)位置

    我一直无法找到一种方法来使用 par 来调整 R 中绘图和主标题之间的 垂直 距离 在这个例子中 plot 1 1 main Title 我可以使用以下方法调整轴标题的位置 par mgp c 2 5 1 0 但我认为没有办法类似地调整主标
  • 在 Pyspark 中将稀疏向量转换为密集向量

    我有一个像这样的稀疏向量 gt gt gt countVectors rdd map lambda vector vector 1 collect SparseVector 13 0 1 0 2 1 0 3 1 0 6 1 0 8 1 0
  • 可编辑的同步排序顺序

    如何实现 Firestore 以便用户可以对数组中的项目进行排序并同步排序顺序 例如 在待办事项列表中订购项目 我可以想出两种选择 但他们感觉不是好主意 在指定索引处插入项目 但我不确定如何或是否可以使用 Firestore 做到这一点 每
  • 多次碰撞的 Sprite Kit 碰撞

    我已经查看并找到了单一碰撞的答案 但我正在寻找一种方法来检测多种类型的碰撞 我正在制作一个游戏 其中有 3 个我想要的碰撞 用户飞机与敌方子弹碰撞 用户子弹与敌机碰撞 我已经在工作 以及敌方子弹和用户子弹碰撞 我已设置并正确设置所有cate
  • python pandas 删除重复的列

    从数据框中删除重复列的最简单方法是什么 我正在通过以下方式读取具有重复列的文本文件 import pandas as pd df pd read table fname 列名称是 Time Time Relative N2 Time Tim