在python中创建两个csv文件的笛卡尔积(交叉连接)

use*_*232 0 python csv

我试图通过交叉连接两个现有的csv文件来创建一个新的csv文件.

csv文件#1:

hour    Elevation   Azimuth x   y   z   sunx    suny    sunz
06:29:00    -0.833  67.72   0.379094033 0.925243946 -0.014538068    0.379094033 0.925243946 -0.014538068
07:00:00    6.28    68.75   0.360264063 0.92641472  0.109387255 0.360264063 0.92641472  0.109387255
Run Code Online (Sandbox Code Playgroud)

csv文件#2:

ID  SURFACES    A1X A1Y A1Z A2X A2Y A2Z B1X B1Y B1Z B2X B2Y B2Z AX  AY  AZ  BX  BY  BZ  ABX ABY ABZ planex  planey  planez
1   GROUND  800085.3323 961271.977  -3.07E-18   800080.8795 961246.1978 -3.07E-18   800097.1572 961269.9344 -3.07E-18   800085.3323 961271.977  -3.07E-18   4.4528  25.7792 0.00E+00    11.8249 -2.0426 0.00E+00    0   0   -313.9317514    0   0   -1
2   ROOF    800019.3994 961242.7732 12  800021.442  961254.5981 12  800090.3488 961230.5181 12  800019.3994 961242.7732 12  -2.0426 -11.8249    0.00E+00    70.9494 -12.2551    0.00E+00    0   0   864.0018273 0
Run Code Online (Sandbox Code Playgroud)

我想要文件的笛卡尔积(每小时都有所有曲面,就像执行SQL交叉连接一样).

我要问的一个例子:http:
//dotnetslackers.com/images/articleimages/sqljoins5.jpg

log*_*ogc 8

您可以使用pandas执行此操作,就好像它是join两个表的SQL一样.不同之处是:

使用与您发布的完全相同的文件example1.csvexample2.csv:

import pandas as pd

df_1 = pd.read_csv('example1.csv', delim_whitespace=True)
df_2 = pd.read_csv('example2.csv', delim_whitespace=True)
df_1['key'] = 1
df_2['key'] = 1

product = pd.merge(df_1, df_2, on='key')

product[['hour', 'SURFACES']]
Run Code Online (Sandbox Code Playgroud)

结果是:

     hour            SURFACES
0    06:29:00    GROUND
1    06:29:00    ROOF
2    07:00:00    GROUND
3    07:00:00    ROOF
Run Code Online (Sandbox Code Playgroud)