Я пытаюсь написать функцию для сравнения двух DF, чтобы создать новый главный DF, содержащий 'id' в DF1 и '_record_id' в DF2 вместе с lat и long путем сопоставления значений lat и long изкаждый ряд.Вот пример таблиц, с которыми я работаю:
DF1 id Latitude Longitude
0 LA-DESI-A101 34.085778 -118.32779
1 LA-DESI-A102 34.086172 -118.327793
2 LA-DESI-A103 34.086511 -118.327791
3 LA-DESI-A104 34.0872 -118.327791
4 LA-DESI-A104 34.08707 -118.327594
DF2 id _latitude _longitude _record_id
0 LA-DESI-A001 34.086511 -118.327791 acbdefy-bbbb-cccc-b2c5-vvdasbhfgds
1 LA-DESI-B001 34.085778 -118.32779 acbdefy-bbbb-cccc-b2c5-voesadfegsd
2 LA-DESI-E004 34.086126 -118.324387 acbdefy-bbbb-cccc-b2c5-voplsadongg
3 LA-DESI-D005 34.086172 -118.327793 acbdefy-bbbb-cccc-b2c5-voasdkognoe
4 LA-DESI-D422 34.113367 -118.321414 acbdefy-bbbb-cccc-b2c5-voenposadkm
Я все еще изучаю панд и не уверен в том, как лучше всего это сделать после некоторого исследования.Я пытался использовать np.where
, но не уверен, как это на самом деле работает. Это пример того, где я нахожусь с ним ...
def compare():
cols = ['id', '_latitude', '_longitude', '_record_id']
MASTER = pd.DataFrame()
MasterDF = MASTER[cols]
MASTER['id'] =
MASTER['_latitude'].astype(float) = np.where((df1['Latitude'] == df2['_latitude']))
MASTER['_longitude'].astype(float) = np.where((df1['Longitude'] == df2['_longitude']))
MASTER['_record_id'] =
Любая помощь или руководство будет принята с благодарностью...
Вот мой полный код:
import os
import pandas as pd
import numpy as np
data = []
def scrapePPLX(directory, filename):
fname = open(directory, "r+")
lines = fname.readlines()
fname.close()
if '_' in filename:
polename = filename.split("_")[0]
else:
polename = filename.split(".")[0]
for line in lines:
if "<VALUE NAME=\"Latitude\" TYPE=\"Double\">" in line:
lat = line.split(">")[1].split("<")[0]
elif "<VALUE NAME=\"Longitude\" TYPE=\"Double\">" in line:
lon = line.split(">")[1].split("<")[0]
data.append([polename,lat, lon])
def main():
for subdir, dirs, files in os.walk(rootdir):
for file in files:
if file.endswith('.pplx'):
scrapePPLX(os.path.join(subdir,file), file)
cols=['id', 'Latitude','Longitude']
PPLXdf = pd.DataFrame(data)
PPLXdf.columns = cols
PPLXdf.to_csv('PPLXcsv.csv',index=False)
cols = ['id', '_latitude', '_longitude', '_record_id']
readCSV = pd.read_csv(pdc)
df = readCSV[cols]
df.to_csv('newPDC.csv', index=False)
compare(PPLXdf, df)
def compare(PPLXdf, df):
PPLXdf['Latitude'] = PPLXdf['Latitude'].astype(str)
PPLXdf['Longitude'] = PPLXdf['Longitude'].astype(str)
df['_latitude'] = df['_latitude'].astype(str)
df['_longitude'] = df['_longitude'].astype(str)
masterdf = PPLXdf.merge(df, left_on=['Latitude', 'Longitude'], right_on=['_latitude', '_longitude'])
masterdf.drop(['Latitude','Longitude'],axis=1,inplace=True)
masterdf.to_csv('Master.csv', index=False)
print("Enter the directory to recurse: ", end='', flush=True)
rootdir = input()
print("Enter name of the PDC: ", end='', flush=True)
pdc = rootdir + "\\" + input()
if __name__ == '__main__':
main()