Объединить и скопировать вставить данные из нескольких файлов Excel в другой не работает правильно - PullRequest
0 голосов
/ 18 октября 2019

Итак, во-первых, у меня есть основной файл Excel с именем Cluster_Cell.xlsx, который мне нужен для заполнения его из другого файла Excel с именем GU EP20191016171519.xlsx, который содержит 3 основных листа, и я хочу скопировать данные из этих листов, которые называются GSM_CDDData, UMTS_CDDData и UMTS_CDDData из столбца с именем CELLNAME, и это имя столбца является ататическим для всех файлов Excel, которые у меня есть .......

Теперь эта часть, которая копирует данные в столбце с именемCELLNAME для мастер-листа Cluster_Cell.xlsx, так что на мастер-листе также есть столбец system, который мне нужен также для заполнения данными, относящимися к этим трем листам, например, у меня есть три листа с именами GSM_CDDData, UMTS_CDDData и LTE_CDDData ..... ИтакТеперь мне нужно заполнить строки как значения GSM, связанные со строками в столбце CELLNAME на листе GSM_CDDData, необходимо заполнить строки как значения UMTS, связанные с имя_сталии с именем UMTS_CDDData, и также необходимо заполнить строки как значения UMTS, связанные с имя_сталицы с именем LTE_CDDData ....

и вот мой код

import os
import pandas as pd
import numpy as np

mydir = (os.getcwd()).replace('\\', '/') + '/'

cluster_cell = pd.read_excel(r'' + mydir + 'Cluster_Cell.xlsx', usecols=['CELLNAME'], encoding='latin-1')

GUL_EP_GSM = pd.read_excel(r'' + mydir + 'GU EP20191016171519.xlsx', sheet_name="GSM_CDDData", usecols=['CELLNAME'],
                           encoding='latin-1')


GUL_EP_UMTS = pd.read_excel(r'' + mydir + 'GU EP20191016171519.xlsx', sheet_name="UMTS_CDDData", usecols=['CELLNAME'],
                            encoding='latin-1')


GUL_EP_LTE = pd.read_excel(r'' + mydir + 'GU EP20191016171519.xlsx', sheet_name="LTE_CDDData", usecols=['CELLNAME'],
                           encoding='latin-1')

#converting to float
GUL_EP_GSM=GUL_EP_GSM.astype(int)
GUL_EP_UMTS=GUL_EP_UMTS.astype(int)
GUL_EP_LTE=GUL_EP_LTE.astype(int)

#print dataframes astype float
print(cluster_cell)
print(GUL_EP_GSM)
print(GUL_EP_UMTS)
print(GUL_EP_LTE)
#creating appended_cell_name dataframe
appended_cell_name = pd.DataFrame({'CELLNAME': cluster_cell['CELLNAME'] & GUL_EP_GSM['CELLNAME'] & GUL_EP_UMTS['CELLNAME'] & GUL_EP_LTE['CELLNAME']})

#creating mask with isin
mask1 = appended_cell_name['CELLNAME'].isin(GUL_EP_GSM['CELLNAME'])
mask2 = appended_cell_name['CELLNAME'].isin(GUL_EP_UMTS['CELLNAME'])
mask3 = appended_cell_name['CELLNAME'].isin(GUL_EP_LTE['CELLNAME'])

#using np.select
cond=[mask1,mask2,mask3]
values=['GSM','UMTS','LTE']
appended_cell_name['system']=np.select(cond,values)

#print appended_cell_name
print(appended_cell_name)
#save in excell
appended_cell_name.to_excel("Cluser_Cell_Final.xlsx", index=False)

и вывод для

print(cluster_cell)
print(GUL_EP_GSM)
print(GUL_EP_UMTS)
print(GUL_EP_LTE)
      CELLNAME
0        10709
1        10710
2        10711
3        11340
4        11341
...        ...
2347   2304376
2348   2304377
2349   2205890
2350   2205891
2351   2205892

[2352 rows x 1 columns]
     CELLNAME
0       10169
1       10170
2       10171
3       10349
4       10350
..        ...
124     54237
125     54996
126     54997
127     54998
128     55966

[129 rows x 1 columns]
     CELLNAME
0     1106382
1     1106383
2     1106384
3     1019810
4     1019811
..        ...
262   1102891
263   1102892
264   1018393
265   1018394
266   1018395

[267 rows x 1 columns]
     CELLNAME
0     2002388
1     2002389
2     2002390
3     2100118
4     2100119
..        ...
538   2304376
539   2304377
540   2205890
541   2205891
542   2205892

и выход print(appended_cell_name)

      CELLNAME system
0         True      0
1        False      0
2         True      0
3        False      0
4         True      0
...        ...    ...
2347     False      0
2348     False      0
2349     False      0
2350     False      0
2351     False      0

[2352 rows x 2 columns]

Так что мое ожидаемое значение для appended_cell_name

равно

      CELLNAME system
0        10709   GSM
1        10710   GSM
2        10711   GSM
3        11340   GSM
4        11341   GSM
...        ...    ...
2347     2304376 LTE
2348     2304377 LTE
2349     2205890 LTE
2350     2205891 LTE
2351     2205892 LTE

Так чтоОсновная идея состоит в том, чтобы получить все необходимые данные из всех 4 dataframe в один файл Excel с именем Cluser_Cell_Final.xlsx

...