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