为了账号安全,请及时绑定邮箱和手机立即绑定

有没有比使用 .drop() 更好的方法来通过从 DataFrame 中删除几列来保留几列?

有没有比使用 .drop() 更好的方法来通过从 DataFrame 中删除几列来保留几列?

海绵宝宝撒 2023-01-04 14:27:48
想知道是否有更好的方法将所需的列保留在数据框中,如果我需要保留的列很少,而要删除的列是其中的几个import numpy as npdf1 = pd.DataFrame(np.random.randint(10,99, size=(13, 26)), columns =list('abcdefghijklmnopqrstuvwxyz'))df1输出:a   b   c   d   e   f   g   h   i   j   ... q   r   s   t   u   v   w   x   y   z0   78  60  27  38  21  93  74  47  16  53  ... 79  56  40  41  87  80  14  82  12  501   84  73  59  46  91  43  22  28  57  52  ... 27  65  81  72  68  90  68  61  22  442   56  37  29  52  57  14  87  82  46  90  ... 67  57  29  14  55  30  46  72  56  913   86  44  46  79  41  74  32  49  42  32  ... 33  34  40  17  30  78  29  75  80  524   14  89  90  79  67  17  34  39  57  37  ... 93  49  78  91  26  73  40  48  91  365   16  62  32  87  56  81  82  17  59  57  ... 84  24  97  39  46  40  68  53  73  406   69  72  16  47  37  20  27  56  13  37  ... 10  28  17  35  39  14  51  85  69  537   81  34  35  20  66  44  86  23  94  57  ... 38  45  76  53  82  72  64  34  81  438   95  90  97  31  18  85  74  18  43  22  ... 20  20  96  25  53  76  55  96  58  989   73  53  72  94  55  33  22  40  11  64  ... 84  66  85  34  94  32  78  72  10  6210  73  24  57  17  63  24  94  25  59  84  ... 34  45  27  28  47  23  38  80  45  4111  69  18  22  42  95  38  16  47  68  36  ... 59  69  35  39  78  75  85  86  53  5512  46  27  53  77  48  15  57  90  32  57  ... 32  79  18  67  71  86  54  11  36  5113 rows × 26 columns比如说,我只需要保留一些随机列,例如 e,u,r,q,j ;有没有更好的方法让它们必须在df1.drop()传入 21 个列名的情况下运行?我在任何问题中都找不到更好的方法。编辑:与 在熊猫数据框中选择多个列中的解决方案不同, 因为要选择删除的列是随机的而不是顺序的
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

您可以将要保留的所有行复制到一个新的数据框中,然后像这样覆盖您的第一个数据框:


    import numpy as np

    import pandas as pd        

    df1 = pd.DataFrame(np.random.randint(10,99, size=(13, 26)), columns =list('abcdefghijklmnopqrstuvwxyz'))

    df2 = pd.DataFrame()

    columns_to_keep = ["e", "r", "u"]

    for column in columns_to_keep:

        df2[column] = df1[column]

    df1 = df2

    df1

或者使用 for 语句删除不在列表中的任何项目:


    columns_to_keep = ["e", "r", "u"]

    for column_name, column_data in df1.iteritems():

      if column_name not in columns_to_keep:

        df1 = df1.drop(column_name, axis=1)

    df1


查看完整回答
反对 回复 2023-01-04
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

让我们只使用列过滤并重新分配回 df1:


df1 = pd.DataFrame(np.random.randint(10,99, size=(13, 26)), columns =list('abcdefghijklmnopqrstuvwxyz'))    

columns_to_keep = ["e", "r", "u"]

df1 = df1[columns_to_keep]

df1.head()

输出:


    e   r   u

0  65  95  13

1  58  42  75

2  95  34  12

3  43  20  79

4  83  27  47



查看完整回答
反对 回复 2023-01-04
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信