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