Итак, во-первых, у меня есть основной файл 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