如何滿足條件時,我如何將數據框中的列分配爲等於另一列?從Pandas數據框中的其他列中分配列的值
更新
問題
我要當條件滿足指定的列值(有時是從該行另一列的值)。
條件不是問題。
我需要一個有效的方式來做到這一點:
df.loc[some condition it doesn't matter,
['a','b','c','d','e','f','g','x','y']]=df['z'],1,3,4,5,6,7,8,df['p']
簡體例如數據
d = {'var' : pd.Series([10,61]),
'c' : pd.Series([100,0]),
'z' : pd.Series(['x','x']),
'y' : pd.Series([None,None]),
'x' : pd.Series([None,None])}
df=pd.DataFrame(d)
條件如果無功是不是失蹤,第一個數字是小於5
結果 make df.x = df.z & df.y = 1
這是僞代碼,不工作,但它是我想要的。
df.loc[((df['var'].dropna().astype(str).str[0].astype(int) < 5)),
['x','y']]=df['z'],1
,但我得到
ValueError異常:不能使用列表式索引具有不同的長度值
理想輸出
c var x z y
0 100 10 x x 1
1 0 61 None x None
以下作品的代碼,但效率太低,因爲我需要將值分配給多個列。
df.loc[((df['var'].dropna().astype(str).str[0].astype(int) < 5)),
['x']]=df['z']
df.loc[((df['var'].dropna().astype(str).str[0].astype(int) < 5)),
['y']]=1
的dropna是行不通的 - 你的布爾指標需要有相同的長度數據幀 – Noah 2015-01-27 00:43:27