題主既然問出行列轉換這樣的問題,那就說明題主的Python功力遠遠不到家的。行列互換其實在Python中很快捷的就可以實現(xiàn)了。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、虛擬空間、營銷軟件、網(wǎng)站建設、寶山網(wǎng)站維護、網(wǎng)站推廣。
首先,讓我們來建立一個矩陣,這里我們使用numpy包下的random包來生成3×3的矩陣。大概的代碼如下所示:
import numpy as np
a=np.random.random((3,3))
這樣,我們就可以生成一個隨機數(shù)組成的3×3矩陣。之后我們就可以將這個矩陣進行行列互換了。具體代碼也非常的簡單,具體如下所示:
b=a.T
如上所示,只需要對a對象進行T操作,就可將我們的數(shù)據(jù)進行行列轉換了。
所以,題主在學習的時候,一定要學會用簡單的方法去解決復雜的問題。而不要將自己的問題復雜化,就如同樓上某位同學寫的代碼那樣,明顯太復雜了。本來三行代碼能夠實現(xiàn)的功能,搞得如此糾結。
另外,如果題主想進入數(shù)據(jù)分析行業(yè),我推薦一本Python的相關書籍給你,這本書可以讓你掌握一些常見的數(shù)據(jù)整理、數(shù)據(jù)清洗操作。這本書的名字是《利用Python進行數(shù)據(jù)分析》,該書作者是高效數(shù)據(jù)分析包Pandas的開發(fā)者,對數(shù)據(jù)分析基本技能的提升作用顯著。
如果有什么想與我交流的,歡迎在本題下進行評論。
可以使用Python字符串內置的替換方法把分隔符“,”替換成‘\r\n’ 換行符即可(Linux、MacOS下?lián)Q行符為:"\n"):
Python代碼實現(xiàn)
iPython下演示
微信群又雙叕有新問題了,如圖所示,兩個表格的轉換。?
首先跟大家分享一下我的記憶口訣:行轉列逆透視
列轉行透視
我們用Excel、Python、SQL分別實現(xiàn)一下上圖的要求。
Excel
使用到Excel中的Power Query,只有Excel2016以上的版本才有,注意版本號。
行轉列
全選數(shù)據(jù)數(shù)據(jù)選項卡自表格/區(qū)域?
由于要轉換的列是由"/"分割的,所以我們需要先拆分列。選中需要拆分的列右鍵拆分列按分隔符。?
選擇自定義輸入"/"選擇每次出現(xiàn)分隔符時確定?
選中標題行右鍵逆透視其他列 也可以多選中值列選擇逆透視?
刪除多于列關閉并上載,完成。?
列轉行
這邊暫且只想到添加輔助列來實現(xiàn)該效果,有更好的方法歡迎在評論區(qū)留言。
同樣多選進入Power Query界面,添加列自定義列輸入"=[值]"確定相當于是復制一列值,列名自定義,自定義公式內的值根據(jù)原表列名來。?
選中“值”透視列“值列”選擇自定義聚合值函數(shù)選擇不要聚合確定第一步也可以選擇“自定義”列,如果這樣操作的話,在第三步就要選擇"值",這里列名沒有起好,請大家看清楚。?
選中透視出來的列右鍵合并列自定義分隔符確定?
選中合并后的列右鍵替換值要查找的列輸入"http://"確定關閉并上載?
完成 。?
Python
行轉列
import pandas as pd
df = pd.DataFrame([['流浪地球', '科幻/冒險/災難'], ['唐山大地震', '劇情/親情/災難']],
columns=['name', 'type'])
df?
# 根據(jù)'/'拆分為列表
df['type'] = df.type.str.split("/")
df_new = df.explode('type')
df_new?
列轉行
df_new.groupby(by='name', as_index=False).agg("/".join)?explode()函數(shù)在pandas0.25.0之后才支持,除了這個方法俺想不到別的方法了。
SQL
行轉列
-- 建表,插入數(shù)據(jù)DROP TABLE IF EXISTS temp;
CREATE TABLE temp ( name varchar(10), type varchar(20) );
INSERT INTO temp VALUES ('流浪地球', '科幻/冒險/災難'), ('唐山大地震', '劇情/親情/災難');
select * from temp;?
SELECT a.name
, substring_index(substring_index(a.type, '/', b.help_topic_id + 1), '/', -1) AS type
FROM temp a
JOIN mysql.help_topic b ON b.help_topic_id length(a.type) - length(replace(a.type, '/', '')) + 1?
列轉行
用剛剛查詢出來的結果我們再創(chuàng)建一個temp2。
DROP TABLE IF EXISTS temp2;
CREATE TABLE temp2
(SELECT a.name , substring_index(substring_index(a.type, '/', b.help_topic_id + 1), '/', -1) AS type FROM temp a JOIN mysql.help_topic b ON b.help_topic_id length(a.type) - length(replace(a.type, '/', '')) + 1);
-- 使用group_concat函數(shù)實現(xiàn)列轉行拼接SELECT name, GROUP_CONCAT(type SEPARATOR '/') AS type
FROM temp2
新聞名稱:python行轉列函數(shù) python將列表列轉為行
標題鏈接:http://chinadenli.net/article44/hpghhe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、外貿建站、手機網(wǎng)站建設、品牌網(wǎng)站制作、建站公司、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)