Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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
如何验证两个不同的.csv文件列ID是否与python匹配?_Python_Python 2.7_Csv_Pandas - Fatal编程技术网

如何验证两个不同的.csv文件列ID是否与python匹配?

如何验证两个不同的.csv文件列ID是否与python匹配?,python,python-2.7,csv,pandas,Python,Python 2.7,Csv,Pandas,我有两个不同的.csv文件,但它们的id相同 file_1.csv: id, column1, column2 4543DFGD_werwe_23, string 4546476FGH34_wee_24, string .... 45sd234_w32rwe_2342342, string 另一个: file_1.csv: id, column3, column4 4543DFGD_werwe_23, bla bla bla 4546476FGH34_wee_24, bla bla bla .

我有两个不同的.csv文件,但它们的id相同

file_1.csv:
id, column1, column2
4543DFGD_werwe_23, string
4546476FGH34_wee_24, string
....
45sd234_w32rwe_2342342, string
另一个:

file_1.csv:
id, column3, column4
4543DFGD_werwe_23, bla bla bla
4546476FGH34_wee_24, bla bla bla
....
45sd234_w32rwe_2342342, bla bla bla

如何验证这两列是否具有相同的id,或者是否与csv模块或pandas相同?

加载后,您可以调用id列:

df['id'].equals(df1['id'])
如果它们在长度和顺序上完全相同,则返回True或False

In [3]:

df = pd.DataFrame({'id':np.arange(10)})
df1 = pd.DataFrame({'id':np.arange(10)})
df.id.equals(df1.id)
Out[3]:
True

In [7]:

df = pd.DataFrame({'id':np.arange(10)})
df1 = pd.DataFrame({'id':[0,1,1,3,4,5,6,7,8,9]})
df.id.equals(df1.id)
Out[7]:
False
In [8]:

df.id == df1.id
Out[8]:
0     True
1     True
2    False
3     True
4     True
5     True
6     True
7     True
8     True
9     True
Name: id, dtype: bool
要加载CSV,请执行以下操作:

df = pd.read_csv('file_1.csv')
df1 = pd.read_csv('file_2.csv') # I'm assuming your real other csv is not the same name as file_1.csv
然后,您可以执行与上面相同的比较:

df.id.equals(df1.id)
如果只想比较id列,可以指定只加载该列:

df = pd.read_csv('file_1.csv', usecols=['id'])
df1 = pd.read_csv('file_2.csv', usecols=['id'])

加载后,您可以调用id列:

df['id'].equals(df1['id'])
如果它们在长度和顺序上完全相同,则返回True或False

In [3]:

df = pd.DataFrame({'id':np.arange(10)})
df1 = pd.DataFrame({'id':np.arange(10)})
df.id.equals(df1.id)
Out[3]:
True

In [7]:

df = pd.DataFrame({'id':np.arange(10)})
df1 = pd.DataFrame({'id':[0,1,1,3,4,5,6,7,8,9]})
df.id.equals(df1.id)
Out[7]:
False
In [8]:

df.id == df1.id
Out[8]:
0     True
1     True
2    False
3     True
4     True
5     True
6     True
7     True
8     True
9     True
Name: id, dtype: bool
要加载CSV,请执行以下操作:

df = pd.read_csv('file_1.csv')
df1 = pd.read_csv('file_2.csv') # I'm assuming your real other csv is not the same name as file_1.csv
然后,您可以执行与上面相同的比较:

df.id.equals(df1.id)
如果只想比较id列,可以指定只加载该列:

df = pd.read_csv('file_1.csv', usecols=['id'])
df1 = pd.read_csv('file_2.csv', usecols=['id'])
按csv模块:

打开两个文件。 通过csv阅读器方法读取文件。 创建字典,因为行中的第一项是键,值是行。 使用set intersection方法从字典中获取相同的键。 打印结果。 代码:

输出:

vivek@vivek:~/Desktop/stackoverflow$ python 27.py
Same Id : ['4546476FGH34_wee_24', '4543DFGD_werwe_23', '45sd234_w32rwe_2342342']
按csv模块:

打开两个文件。 通过csv阅读器方法读取文件。 创建字典,因为行中的第一项是键,值是行。 使用set intersection方法从字典中获取相同的键。 打印结果。 代码:

输出:

vivek@vivek:~/Desktop/stackoverflow$ python 27.py
Same Id : ['4546476FGH34_wee_24', '4543DFGD_werwe_23', '45sd234_w32rwe_2342342']

哇!美好的谢谢你的帮助。如何更改“id”:np.arange10以表示大文件的长度?您有点困惑,我的代码显示了示例数据,我将更新以显示如何在pandas中加载csv并执行相同的比较我可以告诉您pandas csv模块加载csv文件的速度非常快,比python标准csv模块快,请参阅链接:@ml_guy No,忽略np.arange部分,直接加载csv的just do df.id.equalsdf1.id后无需构建新的dfspd.set_选项'display.max_rows=-1'Wow。。美好的谢谢你的帮助。如何更改“id”:np.arange10以表示大文件的长度?您有点困惑,我的代码显示了示例数据,我将更新以显示如何在pandas中加载csv并执行相同的比较我可以告诉您pandas csv模块加载csv文件的速度非常快,比python标准csv模块快,请参阅链接:@ml\u guy No,忽略np.arange部分,直接加载csv的just do df.id.equalsdf1.id后,无需构建新的dfspd.set\u选项'display.max\u rows=-1'惊人!。谢谢你的帮助!欢迎我也在查看pandas实现感谢您的帮助,但我得到了以下信息:相同Id:[]可能我做错了什么,我如何修复它?通过电子邮件将您的py文件和输入文件传递给我-vivekbsable@gmail.comAmazing!. 谢谢你的帮助!欢迎我也在查看pandas实现感谢您的帮助,但我得到了以下信息:相同Id:[]可能我做错了什么,我如何修复它?通过电子邮件将您的py文件和输入文件传递给我-vivekbsable@gmail.com