我有两个大文件,如下所示:
file1
108 a 107 a 6 1
110 a 109 a 50 0
121 a 120 a 107 0
200 a 198 a 108 0
202 a 200 a 109 1
a 120 0
a 130 1
我想基于file1的第二和第三列以及file2的第一和第二列找到交点,然后打印file1和file2的第三列的整个交点线:
输出:
108 a 107 0
110 a 109 1
121 a 120 0
我知道如何根据整条线找到两个文件的交点。关于如何在python中实现我的情况的任何线索吗?谢谢!
答案 0 :(得分:1)
具有pandas.DataFrame.merge
功能(作为单行解决方案):
In [122]: df1 = pd.read_table('file1', delim_whitespace=True, header=None)
In [123]: df1
Out[123]:
0 1 2
0 108 a 107
1 110 a 109
2 121 a 120
3 200 a 198
4 202 a 200
In [124]: df2 = pd.read_table('file2', delim_whitespace=True, header=None)
In [125]: df2
Out[125]:
0 1 2
0 a 6 1
1 a 50 0
2 a 107 0
3 a 108 0
4 a 109 1
5 a 120 0
6 a 130 1
In [126]: print(df1.merge(df2, left_on=[1,2], right_on=[0,1]).loc[:, ['0_x','1_x','2_x','2_y']].to_string(header=False, index=False))
108 a 107 0
110 a 109 1
121 a 120 0
要将结果转储到csv文件中:
df1.merge(df2, left_on=[1,2], right_on=[0,1]).loc[:, ['0_x','1_x','2_x','2_y']].to_csv('result.csv', sep='\t', header=False, index=False)