繁体   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