簡體   English   中英

當你有太多列時融化(unpivot)Pandas 數據框?

[英]Melting(unpivot) Pandas dataframe when you have too many columns?

我有一個包含以下列的數據框 -

social_media.columns
Index(['respid', 'sample', 'comp', 'int_date', 'lang', 'cregion', 'state',
       'density', 'sfips', 'usr', 'qs1', 'sex', 'eminuse', 'intmob', 'intfreq',
       'snsint2', 'home4nw', 'bbhome1', 'bbhome2', 'device1a', 'smart2', 'q20',
       'bbsmart1', 'bbsmart2', 'bbsmart3a', 'bbsmart3b', 'bbsmart3c',
       'bbsmart3d', 'bbsmart3e', 'bbsmart3f', 'bbsmart3foe@', 'bbsmart4',
       'web1a', 'web1b', 'web1c', 'web1d', 'web1e', 'web1f', 'web1g', 'web1h',
       'web1i', 'sns2a', 'sns2b', 'sns2c', 'sns2d', 'sns2e', 'device1b',
       'device1c', 'device1d', 'books1', 'books2a', 'books2b', 'books2c',
       'age', 'marital', 'educ2', 'emplnw', 'hisp', 'racem1', 'racem2',
       'racem3', 'racem4', 'racecmb', 'birth_hisp', 'inc', 'party', 'partyln',
       'hh1', 'hh3', 'ql1', 'ql1a', 'qc1', 'weight', 'cellweight'],
      dtype='object')

我只想融化與 web1a、web1b ---- web1i 相關的列,並希望其他列保持原樣。 我知道我必須指定我不想取消透視的所有列,我必須將它們包含在熊貓融化函數id_vars參數中,但您可以看到有許多列我必須復制和粘貼。

有沒有更簡單的方法來實現這一點?

我們可以使用帶有正則表達式的DataFrame.filter來解決您選擇某些列的問題:

案例 1:使用web選擇所有列:

social_media.filter(like='web').columns

Index(['web1a', 'web1b', 'web1c', 'web1d', 'web1e', 'web1f', 'web1g', 'web1h',
       'web1i'],
      dtype='object')

情況 2:選擇名稱中沒有web所有列:

social_media.filter(regex='^[^web]').columns

Index(['respid', 'sample', 'comp', 'int_date', 'lang', 'cregion', 'state',
       'density', 'sfips', 'usr', 'qs1', 'sex', 'intmob', 'intfreq', 'snsint2',
       'home4nw', 'device1a', 'smart2', 'q20', 'sns2a', 'sns2b', 'sns2c',
       'sns2d', 'sns2e', 'device1b', 'device1c', 'device1d', 'age', 'marital',
       'hisp', 'racem1', 'racem2', 'racem3', 'racem4', 'racecmb', 'inc',
       'party', 'partyln', 'hh1', 'hh3', 'ql1', 'ql1a', 'qc1', 'cellweight'],
      dtype='object')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM