亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從具有特定列和條件的數據框中選擇行(不使用列名)

從具有特定列和條件的數據框中選擇行(不使用列名)

開心每一天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 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號