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

从具有特定列和条件的数据框中选择行(不使用列名)

从具有特定列和条件的数据框中选择行(不使用列名)

开心每一天1111 2021-07-29 18:09:18
我有两个数据框df1和df2,df1A B2 65 17 31 29 74 73 48 9并df2包含A  B  A_bin  B_bin  C  D  E2  6  1      2      5  4  15  1  2      1      2  2  47  3  3      1      5  1  71  2  1      1      8  4  99  7  3      3      5  5  84  7  2      3      1  8  53  4  1      2      2  9  38  9  3      3      4  6  2我想选择只选择那些特定的行df2到一个新的数据帧df_result_A为具有所有的行A_bin = 1 相若方式,单独的数据帧df_result_B具有所有这些行df2,使得B_bin行包含1.我发现很难把我的逻辑不正确的语法或者可能我的逻辑是错误的,for i in range(len(df1(df2[columns])+len(df)):    if(row value is 1)print in df_result_Aprint in df_result_B由于面临的挑战是不使用的列名和索引,如代码应该用于其他数据集,以及运行我在DF2的前两列试图首先作为迭代len(df1)都会让我知道2列之后A_bin,并B_bin会来的。因此,当我在 df2 的第一列上时,添加len(df1)将使我打开A_bin并迭代它以检查值是否为 1 并将其存储在单独的数据帧中。同样,当我在df2添加的第二列上时,len(df2)会将我置于其中B_bin,从而将其结果存储在df_result_B. 单独数据帧中的预期结果。df_result_AA  B   C  D  E2  6   5  4  11  2   8  4  93  4   2  9  3df_result_bA B C D E5 1 2 2 47 3 5 1 71 2 8 4 9
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

你可以这样做:


示例数据框:


In [31]: df1

Out[31]: 

   A  B

0  2  6

1  5  1

2  7  3

3  1  2

4  9  7

5  4  7

6  3  4

7  8  9


In [36]: df2

Out[36]: 

   A  B  A_bin  B_bin  C  D  E

0  2  6      1      2  5  4  1

1  5  1      2      1  2  2  4

2  7  3      3      1  5  1  7

3  1  2      1      1  8  4  9

4  9  7      3      3  5  5  8

5  4  7      2      3  1  8  5

6  3  4      1      2  2  9  3

7  8  9      3      3  4  6  2

有一个变量count和一个空字典来动态存储新的数据帧。


count = 0

d = dict()

我已经使用您的逻辑根据df1.


for col in df2.columns:

    print(col)

    l = df1.shape[1]

    if count < l:

        d[col] = df2[ df2.iloc[:, count + l] == 1 ]

    count += 1

这会遍历 的列,df2直到变量count小于 的列数df1。它过滤第 3 和第 4 列(根据您的示例)的行,其值为1和 存储在字典中d。


现在,您可以遍历您的字典并找到您想要的新数据框:


In [52]: for key in d.keys():

    ...:     print(d[key][d[key].columns.drop(list(d[key].filter(regex='bin')))])


   A  B  C  D  E

0  2  6  5  4  1

3  1  2  8  4  9

6  3  4  2  9  3



   A  B  C  D  E

1  5  1  2  2  4

2  7  3  5  1  7

3  1  2  8  4  9

因此,您不必担心确切的列名称。如果这有帮助,请告诉我。


查看完整回答
反对 回复 2021-08-03
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

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