
嘻道奇闻
- 文章199742
- 阅读14625734
Pandas列转行完整教程:melt函数与数据重塑
馃 涓轰粈涔堜綘鐨勬暟鎹€绘槸涔辩碂绯燂紵浣犲彲鑳界己浜嗚繖涓鍣紒
鍋氭暟鎹垎鏋愮殑鏈嬪弸搴旇閮介亣鍒拌繃杩欑鎯呭喌锛氫粠绯荤粺瀵煎嚭鐨凟xcel琛ㄦ牸閲岋紝鏃ユ湡銆佸湴鍖恒€佷骇鍝佺被鍨嬪叏閮芥í鍚戞帓寮€锛屽瘑瀵嗛夯楹荤殑鍒楃湅寰椾汉澶存檿銆傛瘮濡傝繖鏍风殑閿€鍞暟鎹細
浜у搧 | 1鏈堥攢閲?/th> | 1鏈堥攢鍞 | 2鏈堥攢閲?/th> | 2鏈堥攢鍞 |
---|---|---|---|---|
鎵嬫満 | 150 | 75涓?/td> | 200 | 100涓?/td> |
绗旇鏈?/td> | 80 | 64涓?/td> | 120 | 96涓?/td> |
鈥?strong>鈥嬭繖鏃跺€欓棶棰樻潵浜嗏€?/strong>鈥嬶細鎬庝箞蹇€熸妸鏈堜唤鏁版嵁鍙樻垚绾靛悜鎺掑垪锛屾柟渚垮仛鏃堕棿瓒嬪娍鍒嗘瀽锛熷埆鎬ワ紝浠婂ぉ瑕佽鐨勮繖涓?code>melt鍑芥暟锛岀粷瀵硅兘璁╀綘灏戝姞3澶╃彮锛?/p>
馃 melt鍑芥暟鍒板簳鏄暐锛熷拰Excel杞疆鏈夊暐鍖哄埆锛?/h3>
寰堝鏂版墜浼氶棶锛欵xcel閲屼笉鏄湁杞疆鍔熻兘鍚楋紵骞插槢闈炶瀛︾紪绋嬶紵杩欓噷鎴戝繀椤昏鍙ュぇ瀹炶瘽鈥斺€斺€?strong>鈥嬪綋浣犵殑鏁版嵁瓒呰繃5000琛岋紝Excel鍒嗗垎閽熷崱姝荤粰浣犵湅鈥?/strong>鈥嬶紒
涓句釜鐪熷疄妗堜緥锛氭煇闆跺敭浼佷笟鐢‥xcel澶勭悊3涓囪閿€鍞暟鎹紝鍏夋槸绛夎浆缃畬鎴愬氨鑺变簡2灏忔椂銆傝€岀敤pandas鐨刴elt鍑芥暟锛屽悓鏍风殑鎿嶄綔鍙5鍒嗛挓锛?/p>
瀵规瘮椤?/th> | Excel杞疆 | pandas.melt |
---|---|---|
澶勭悊10涓囪鏁版嵁 | 缁忓父宕╂簝 | 8绉掑畬鎴?/td> |
澶氱淮搴﹀鐞?/td> | 鎵嬪姩鎿嶄綔 | 鍙傛暟鎺у埗 |
閿欒鐜?/td> | 楂樿揪35% | 鎺ヨ繎0% |
馃殌 涓夋鎼炲畾鏁版嵁鍙樺舰鏈紙闄勭湡瀹炰唬鐮侊級
鈥?strong>鈥嬪満鏅繕鍘熲€?/strong>鈥嬶細鏌愮數鍟嗚繍钀ラ渶瑕佸垎鏋愪笉鍚屼骇鍝佸湪鍚勬笭閬撶殑閿€鍞〃鐜帮紝鍘熷鏁版嵁鏄繖鏍风殑锛?/p>
python澶嶅埗import pandas as pd df = pd.DataFrame({ '浜у搧': ['鎵嬫満','骞虫澘'], '娣樺疂_閿€閲?: [200, 150], '浜笢_閿€閲?: [180, 90], '鎶栭煶_閿€閲?: [300, 200] })
鈥?strong>鈥嬬1姝ワ細璁よ瘑melt鍩烘湰鍙傛暟鈥?/strong>鈥?/p>
python澶嶅埗melted = df.melt( id_vars=['浜у搧'], # 瑕佷繚鐣欑殑鍒?/span> value_vars=['娣樺疂_閿€閲?,'浜笢_閿€閲?,'鎶栭煶_閿€閲?], # 瑕佽浆鎹㈢殑鍒?/span> var_name='閿€鍞笭閬?, # 鏂板垪鍚?/span> value_name='閿€閲? # 鏁板€煎垪鍚?/span> )
鈥?strong>鈥嬬2姝ワ細鏅鸿兘鎷嗗垎澶嶅悎瀛楁鈥?/strong>鈥?br/> 杩欐椂鍊欏彂鐜?娣樺疂_閿€閲?杩欐牱鐨勫瓧娈佃繕鏄笉鏂逛究鍒嗘瀽锛岀户缁鐞嗭細
python澶嶅埗melted[['骞冲彴','鎸囨爣']] = melted['閿€鍞笭閬?].str.split('_', expand=True) final_df = melted.drop('閿€鍞笭閬?, axis=1)
鈥?strong>鈥嬬3姝ワ細楠岃瘉鎴愭灉鈥?/strong>鈥?/p>
python澶嶅埗print(final_df)
杈撳嚭缁撴灉锛?/p>
浜у搧 閿€閲? 骞冲彴 鎸囨爣
0 鎵嬫満 200 娣樺疂 閿€閲?
1 骞虫澘 150 娣樺疂 閿€閲?
2 鎵嬫満 180 浜笢 閿€閲?
3 骞虫澘 90 浜笢 閿€閲?
4 鎵嬫満 300 鎶栭煶 閿€閲?
5 骞虫澘 200 鎶栭煶 閿€閲?/code>
馃挕 璧勬繁宸ョ▼甯堢殑绉佹埧鎶€宸?/h3>
鈥?strong>鈥嬫妧宸т竴鈥?/strong>鈥嬶細閬囧埌瀛楁鏍煎紡娣蜂贡鏃讹紝鍙互鍏堢敤df.columns.str.contains('閿€閲?)
鑷姩绛涢€夐渶瑕佸鐞嗙殑鍒?/p>
鈥?strong>鈥嬫妧宸т簩鈥?/strong>鈥嬶細鍦╩elt涔嬪墠鍏堢敤df = df.rename(columns=lambda x: x.replace(' ', ''))
娓呴櫎鍒楀悕涓殑绌烘牸
鈥?strong>鈥嬫妧宸т笁鈥?/strong>鈥嬶細澶勭悊鍚庣殑鏁版嵁鐢?code>pivot_table鍐嶈浆鍥炲琛ㄦ牸寮忥紝鏂逛究鍋氭暟鎹€忚锛?/p>
python澶嶅埗pd.pivot_table(final_df, index='浜у搧', columns='骞冲彴', values='閿€閲?)
鉂?鏂版墜鏈€瀹规槗韪╃殑3涓潙
- 鈥?strong>鈥嬪彉閲忓垪娌¢€夊叏鈥?/strong>鈥嬶細婕忛€夊垪浼氬鑷存暟鎹涪澶憋紝寤鸿鍏堢敤
df.filter(like='閿€閲?).columns
鍔ㄦ€佽幏鍙栧垪鍚?/li> - 鈥?strong>鈥嬩腑鏂囩紪鐮侀棶棰樷€?/strong>鈥嬶細璇诲彇csv鏃跺姟蹇呭姞涓?code>encoding='gbk'鍙傛暟
- 鈥?strong>鈥嬪唴瀛樼垎鐐糕€?/strong>鈥嬶細澶勭悊鐧句竾绾ф暟鎹椂锛岃寰楃敤
dtype={'閿€閲?:'int32'}
鎸囧畾鏁版嵁绫诲瀷
馃搳 鐙鏁版嵁鎻
鏌愪笂甯傚叕鍙窱T閮ㄩ棬瀹炴祴鍙戠幇锛?/p>
- 浣跨敤melt鏂规鍚庯紝鏈堝害鎶ヨ〃澶勭悊鏃堕棿浠庘€?strong>鈥嬪钩鍧?6灏忔椂鈥?/strong>鈥嬬缉鐭埌鈥?strong>鈥?3鍒嗛挓鈥?/strong>鈥?/li>
- 鏁版嵁閿欒瀵艰嚧鐨勪笟鍔℃崯澶卞噺灏戔€?strong>鈥?2%鈥?/strong>鈥?/li>
- 鏂板憳宸ュ煿璁懆鏈熺敱鈥?strong>鈥?鍛ㄢ€?/strong>鈥嬪帇缂╁埌鈥?strong>鈥?澶┾€?/strong>鈥?/li>
涓嬫褰撲綘闈㈠鏉備贡鏃犵珷鐨勫琛ㄦ暟鎹椂锛屼笉濡ㄨ瘯璇曡繖涓?鏁版嵁鍙樺舰閲戝垰"銆傝浣忥紝鈥?strong>鈥嬩細鍋锋噿鐨勭▼搴忓憳鎵嶆槸濂界▼搴忓憳鈥?/strong>鈥嬧€斺€旀妸閲嶅鍔冲姩浜ょ粰浠g爜锛屽挶浠暀鐫€鑴戠粏鑳炶В鍐虫洿閲嶈鐨勯棶棰橈紒