将粘贴数据从多个excel文件合并并复制到另一个excel文件无法正常工作

2024-09-19 23:44:42 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我有一个名为Cluster_Cell.xlsx的主excel文件,我需要从另一个名为GU EP20191016171519.xlsx的excel文件中填充它。它包含3个主工作表,我想从中复制数据。这些工作表名为GSM_CDDDataUMTS_CDDDataUMTS_CDDData来自名为CELLNAME的列,这个列名对于我所有的excel文件来说都是静态的

现在,这是将名为CELLNAME的列中的数据复制到master sheet Cluster_Cell.xlsx的部分,因此master sheet也有一个名为system的列,我还需要填充与这三张表相关的数据。例如,我有三张表,分别命名为GSM_Cddata、UMTS_Cddata和LTE_Cddata。。。。。因此,现在我需要将行填充为与工作表GSM_CDDData中CELLNAME列中的行相关的值,需要将行填充为与工作表名称(称为UMTS_CDDData)相关的值UMTS,还需要将行填充为与工作表名称(称为LTE_CDDData)相关的值UMTS

这是我的密码

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

因此,主要思想是将所有需要的数据从所有4dataframe获取到一个名为Cluser_Cell_Final.xlsx的excel文件中


Tags: namefalsecellxlsxexceleppdprint