python-3.x - col.drop_duplicates() 有更快的替代方法吗?
问题描述
我正在尝试删除我的数据框(csv)中的重复数据并获得一个单独的 csv 来显示每列的唯一答案。问题是我的代码已经运行了一天(确切地说是 22 小时)我愿意接受其他一些建议。
我的数据有大约 20,000 行带有标题。我之前曾尝试像 df[col].unique() 一样逐一检查唯一列表,并且不需要那么长时间。
>df = pd.read_csv('Surveydata.csv')
>
>df_uni=df.apply(lambda col: col.drop_duplicates().reset_index(drop=True))
>
>df_uni.to_csv('Surveydata_unique.csv',index=False)
我期望的是具有相同列集但在每个字段中没有任何重复的数据框。前任。如果 df['Rmoisture'] 有 Yes,No,Nan 的组合,它应该只有这 3 个包含在另一个数据帧 df_uni 的同一列中。
解决方案
另一种方法:
new_df = []
[new_df.append(pd.DataFrame(df[i].unique(), columns=[i])) for i in df.columns]
new_df = pd.concat(new_df,axis=1)
print(new_df)
Mass Length Material Special Mark Special Num Breaking \
0 4.0 5.500000 Wood A 20.0 Yes
1 12.0 2.600000 Steel NaN NaN No
2 1.0 3.500000 Rubber B 5.5 NaN
3 15.0 6.500000 Plastic X 6.6 NaN
4 6.0 12.000000 NaN NaN 5.6 NaN
5 14.0 2.500000 NaN NaN 6.3 NaN
6 2.0 15.000000 NaN NaN NaN NaN
7 8.0 2.000000 NaN NaN NaN NaN
8 7.0 10.000000 NaN NaN NaN NaN
9 9.0 2.200000 NaN NaN NaN NaN
10 11.0 4.333333 NaN NaN NaN NaN
11 13.0 4.666667 NaN NaN NaN NaN
12 NaN 3.750000 NaN NaN NaN NaN
13 NaN 1.666667 NaN NaN NaN NaN
Comment
0 There is no heat
1 NaN
2 Contains moisture
3 Hit the table instead
4 A sign of wind
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
推荐阅读
- javascript - 嗨,不知道为什么 heroku 找不到 mongoose 模块。任何想法?
- kendo-ui-angular2 - 剑道角图图例颜色
- jpa - 提交 JSF 数据表时初始化 JPA 子实体
- javascript - 如何在动态创建的对象上启用 css 转换
- spring-boot - Why does my Spring Boot application serve correctly web content locally but then I get 503 on Heroku?
- algorithm - 矩阵乘法子问题图顶点度数
- intellij-idea - 如何在 PhpStorm 中并排打开两个终端?
- javascript - javascript Object.create 丢失属性
- laravel - Laravel 错误“模型/模型名称的声明应与 Illuminate\Database\Eloquent\Model 兼容”
- javascript - 如何使用 JS 动画容器