python實現(xiàn)Excel多行多列的轉(zhuǎn)換的示例
前言
使用pandas對Excel的多行和多列進行轉(zhuǎn)換
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、使用需求

將上表中的多行多列數(shù)據(jù)轉(zhuǎn)換成下表中的三列多行數(shù)據(jù),需要做的就是將同一日期不同坐標的值匯總到一列數(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)#這里是坐標,是日期右邊的列名,可以根據(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列進行合并分隔符為|,2列與2列合并分割符為#,即 監(jiān)測值和坐標
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ù)值和坐標,這里merge_list[idx]是后面添加的坐標列
return '#'.join(result) # 將列表用#號分割返回一個大字符串 格式為:檢測值和坐標
# 添加新列,把待合并的所有列變成一個大字符串(傳入函數(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['坐標'] = df['merge'].str.split('|').str[1]#這里添加新的坐標列df.drop(['merge'],axis=1,inplace=True)df['75.951142 39.473421'] = df['merge'].str.split('|').str[0]
df['坐標'] = df['merge'].str.split('|').str[1]#這里添加新的坐標列
df.drop(['merge'],axis=1,inplace=True)8.存儲到本地生成新的csv文件
df.to_excel('轉(zhuǎn)換后數(shù)據(jù).xlsx', index=False)總結(jié)
以上就是今天要講的內(nèi)容,本文僅僅簡單介紹了多行多列數(shù)據(jù)之間的轉(zhuǎn)換的一個小案例,主要是利用pandas來解決。
到此這篇關(guān)于python實現(xiàn)Excel多行多列的轉(zhuǎn)換的示例的文章就介紹到這了,更多相關(guān)python Excel多行多列轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
anaconda中Conda創(chuàng)建虛擬環(huán)境的實現(xiàn)步驟
在Anaconda中,可以使用conda命令來創(chuàng)建和管理虛擬環(huán)境,本文主要介紹了anaconda中Conda創(chuàng)建虛擬環(huán)境的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-12-12
用Python的SimPy庫簡化復(fù)雜的編程模型的介紹
這篇文章主要介紹了用Python的SimPy庫簡化復(fù)雜的編程模型的介紹,本文來自于官方的開發(fā)者技術(shù)文檔,需要的朋友可以參考下2015-04-04
利用Python中SocketServer 實現(xiàn)客戶端與服務(wù)器間非阻塞通信
本文主要介紹了利用Python中SocketServer 實現(xiàn)客戶端與服務(wù)器間非阻塞通信示例代碼,具有很好的參考價值,需要的朋友一起來看下吧2016-12-12

