Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较数据帧中所有行的最快方法_Python_Csv_Pandas_Dataframe_Data Processing - Fatal编程技术网

Python 比较数据帧中所有行的最快方法

Python 比较数据帧中所有行的最快方法,python,csv,pandas,dataframe,data-processing,Python,Csv,Pandas,Dataframe,Data Processing,我已经用Python 3.6编写了一个程序,试图将用户csv/excel的列映射到我拥有的xls模板。到目前为止还不错,但这一过程的一部分必须是用户的数据处理,即联系人。例如,我想删除重复项、合并数据等。为此,我需要将每一行与所有其他行进行比较,这是非常昂贵的。我读取的每个用户的csv都有大约2000-4000行,但我希望它对更多行更有效。我已将数据存储在pd.DataFrame中 除了暴力,还有更有效的方法进行比较吗 谢谢首先,您尝试了什么代码 但要删除重复项,这在熊猫中非常容易。示例如下:

我已经用Python 3.6编写了一个程序,试图将用户csv/excel的列映射到我拥有的xls模板。到目前为止还不错,但这一过程的一部分必须是用户的数据处理,即联系人。例如,我想删除重复项、合并数据等。为此,我需要将每一行与所有其他行进行比较,这是非常昂贵的。我读取的每个用户的csv都有大约2000-4000行,但我希望它对更多行更有效。我已将数据存储在pd.DataFrame中

除了暴力,还有更有效的方法进行比较吗


谢谢

首先,您尝试了什么代码

但要删除重复项,这在熊猫中非常容易。示例如下:

import pandas as pd
import numpy as np
# Creating the Test DataFrame below -------------------------------
dfp = pd.DataFrame({'A' : [np.NaN,np.NaN,3,4,5,5,3,1,5,np.NaN], 
                    'B' : [1,0,3,5,0,0,np.NaN,9,0,0], 
                    'C' : ['AA1233445','A9875', 'rmacy','Idaho Rx','Ab123455','TV192837','RX','Ohio Drugs','RX12345','USA Pharma'], 
                    'D' : [123456,123456,1234567,12345678,12345,12345,12345678,123456789,1234567,np.NaN],
                    'E' : ['Assign','Unassign','Assign','Ugly','Appreciate','Undo','Assign','Unicycle','Assign','Unicorn',]})
print(dfp)

#Output Below----------------

     A    B           C            D           E
0  NaN  1.0   AA1233445     123456.0      Assign
1  NaN  0.0       A9875     123456.0    Unassign
2  3.0  3.0       rmacy    1234567.0      Assign
3  4.0  5.0    Idaho Rx   12345678.0        Ugly
4  5.0  0.0    Ab123455      12345.0  Appreciate
5  5.0  0.0    TV192837      12345.0        Undo
6  3.0  NaN          RX   12345678.0      Assign
7  1.0  9.0  Ohio Drugs  123456789.0    Unicycle
8  5.0  0.0     RX12345    1234567.0      Assign
9  NaN  0.0  USA Pharma          NaN     Unicorn


# Remove all records with duplicated values in column a:
# keep='first' keeps the first occurences.

df2 = dfp[dfp.duplicated(['A'], keep='first')]
#output
     A    B           C           D         E
1  NaN  0.0       A9875    123456.0  Unassign
5  5.0  0.0    TV192837     12345.0      Undo
6  3.0  NaN          RX  12345678.0    Assign
8  5.0  0.0     RX12345   1234567.0    Assign
9  NaN  0.0  USA Pharma         NaN   Unicorn
如果您想要有一个新的数据帧,其中没有检查所有列的重复项,请使用tilde。
~
运算符本质上是
不等于
=操作员。官方文件


df2=dfp[~dfp.duplicated(keep='first')]

是的,通常是可能的。请发布示例输入和输出数据集(CSV/dict/JSON/Python代码格式的5-7行作为文本,以便在编码时使用),并描述为了获得输出数据集,您希望对输入数据做什么。请阅读并相应编辑您的帖子。