您好,登錄后才能下訂單哦!
今天小編給大家分享一下python如何實(shí)現(xiàn)Excel多行多列的轉(zhuǎn)換的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
將上表中的多行多列數(shù)據(jù)轉(zhuǎn)換成下表中的三列多行數(shù)據(jù),需要做的就是將同一日期不同坐標(biāo)的值匯總到一列數(shù)據(jù)。核心思想就是新建一列然后把原來的一行多列數(shù)據(jù)匯總成一列多行數(shù)據(jù)。不同日期的值匯總到一起,即完成多行多列的轉(zhuǎn)換。
1.引入庫
import pandas as pd
2.讀入數(shù)據(jù)
df = pd.read_excel('源數(shù)據(jù).xlsx')
3.將需要合并的列的列名先放在列表中
merge_list = list(df.loc[:, '75.951142 39.473421':].columns)#這里是坐標(biāo),是日期右邊的列名,可以根據(jù)自己的表格改。
4.填充空值為0
df.loc[:, '75.951142 39.473421':] = df.loc[:, '75.951142 39.473421':].fillna(0)
5.添加新列,把待合并的所有列變成一個大字符串(傳入函數(shù)處理)
# 定義函數(shù)來處理合并操作 def merge_values(s): # 每2列進(jìn)行合并分隔符為|,2列與2列合并分割符為#,即 監(jiān)測值和坐標(biāo) result = [] for idx in range(0, len(s.values), 2): # len(s.values)即df.loc[:,'學(xué)科':]的每一行的長度 ,第三個字段2為步長2即2個合并 result.append(f'{s[idx]}|{merge_list[idx]}') # 生成一個列表,格式為數(shù)值和坐標(biāo),這里merge_list[idx]是后面添加的坐標(biāo)列 return '#'.join(result) # 將列表用#號分割返回一個大字符串 格式為:檢測值和坐標(biāo) # 添加新列,把待合并的所有列變成一個大字符串(傳入函數(shù)處理) df['merge'] = df.loc[:, '75.951142 39.473421':].apply(merge_values, axis=1)
6.刪除合并之前的列,保存id,name,merge列
df.drop(merge_list,axis=1,inplace=True)
7. 使用explode來變成多列
df['75.951142 39.473421'] = df['merge'].str.split('|').str[0]df['坐標(biāo)'] = df['merge'].str.split('|').str[1]#這里添加新的坐標(biāo)列df.drop(['merge'],axis=1,inplace=True)df['75.951142 39.473421'] = df['merge'].str.split('|').str[0] df['坐標(biāo)'] = df['merge'].str.split('|').str[1]#這里添加新的坐標(biāo)列 df.drop(['merge'],axis=1,inplace=True)
8.存儲到本地生成新的csv文件
df.to_excel('轉(zhuǎn)換后數(shù)據(jù).xlsx', index=False)
以上就是“python如何實(shí)現(xiàn)Excel多行多列的轉(zhuǎn)換”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。