我有一個資料框 df
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[0,1,1,0,1,0], [1,0,1,1,0,0], [1,1,0,0,0,1],[1,0,1,0,1,1],
[0,0,1,0,0,1]]))
df
現在,從資料框 df 我喜歡根據條件創建一個新的資料框 條件:如果一列包含三個或三個以上的“1”,那么新的資料框列值為“1”,否則為“0”
expected output of new data frame
1 0 1 0 0 1
uj5u.com熱心網友回復:
您也可以在沒有apply. 您可以sum沿著行, axis=0, 并創建一個布林值gt(2):
res = df.sum(axis=0).gt(2).astype(int)
print(res)
0 1
1 0
2 1
3 0
4 0
5 1
dtype: int32
正如大衛所指出的,上述結果是一個series. 如果你需要一個資料框,你可以to_frame()在它的末尾鏈接
uj5u.com熱心網友回復:
您可以執行以下操作:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[0,1,1,0,1,0], [1,0,1,1,0,0], [1,1,0,0,0,1],[1,0,1,0,1,1],
[0,0,1,0,0,1]]))
df_res = pd.DataFrame(df.apply(lambda c: 1 if np.sum(c) > 2 else 0))
In [6]: df_res
Out[6]:
0
0 1
1 0
2 1
3 0
4 0
5 1
而不是np.sum(c)你也可以做c.sum()
如果你想要它轉置只需執行以下操作:
df_res = pd.DataFrame(df.apply(lambda c: 1 if c.sum() > 2 else 0)).T
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383417.html
