首页 > 奇闻 > 正文内容

Pandas列转行完整教程:melt函数与数据重塑

奇闻2025-05-19 11:37:05

馃 涓轰粈涔堜綘鐨勬暟鎹€绘槸涔辩碂绯燂紵浣犲彲鑳界己浜嗚繖涓鍣紒

鍋氭暟鎹垎鏋愮殑鏈嬪弸搴旇閮介亣鍒拌繃杩欑鎯呭喌锛氫粠绯荤粺瀵煎嚭鐨凟xcel琛ㄦ牸閲岋紝鏃ユ湡銆佸湴鍖恒€佷骇鍝佺被鍨嬪叏閮芥í鍚戞帓寮€锛屽瘑瀵嗛夯楹荤殑鍒楃湅寰椾汉澶存檿銆傛瘮濡傝繖鏍风殑閿€鍞暟鎹細

浜у搧1鏈堥攢閲?/th>1鏈堥攢鍞2鏈堥攢閲?/th>2鏈堥攢鍞
鎵嬫満15075涓?/td>200100涓?/td>
绗旇鏈?/td>8064涓?/td>12096涓?/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涓潙

  1. 鈥?strong>鈥嬪彉閲忓垪娌¢€夊叏鈥?/strong>鈥嬶細婕忛€夊垪浼氬鑷存暟鎹涪澶憋紝寤鸿鍏堢敤df.filter(like='閿€閲?).columns鍔ㄦ€佽幏鍙栧垪鍚?/li>
  2. 鈥?strong>鈥嬩腑鏂囩紪鐮侀棶棰樷€?/strong>鈥嬶細璇诲彇csv鏃跺姟蹇呭姞涓?code>encoding='gbk'鍙傛暟
  3. 鈥?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爜锛屽挶浠暀鐫€鑴戠粏鑳炶В鍐虫洿閲嶈鐨勯棶棰橈紒

搜索