這是我的嘗試。例如從不同列中取絕對值的最大值並過濾掉NaN Python
df = pd.DataFrame({'a':[5,0,1,np.nan], 'b':[np.nan,1,4,3], 'c':[-3,-2,0,0]})
df.dropna(axis=1).max(axis=1,key=abs)
篩選出井NaN
值,但其絕對值得到highes 0或負值,而不是
結果應與
5
-2
4
3
這是我的嘗試。例如從不同列中取絕對值的最大值並過濾掉NaN Python
df = pd.DataFrame({'a':[5,0,1,np.nan], 'b':[np.nan,1,4,3], 'c':[-3,-2,0,0]})
df.dropna(axis=1).max(axis=1,key=abs)
篩選出井NaN
值,但其絕對值得到highes 0或負值,而不是
結果應與
5
-2
4
3
您可以使用一列平方數據上的np.nanargmax
:
>>> df.values[range(df.shape[0]),np.nanargmax(df**2,axis=1)]
array([ 5., -2., 4., 3.])
df = df.fillna(0)
l = df.abs().values.argmax(axis=1)
pd.Series([df.values[i][l[i]] for i in range(len(df.values))])
In [532]: pd.Series([df.values[i][l[i]] for i in range(len(df.values))])
Out[532]:
0 5
1 -2
2 4
3 3
dtype: float64
一個內膽:
pd.Series([df.values[i][df.fillna(0).abs().values.argmax(axis=1)[i]] for i in range(len(df.values))])
我通過
maxCol=lambda x: max(x.min(), x.max(), key=abs)
df.apply(maxCol,axis=1)
解決,當你做'dropna'你失去所有列以'NaN'值只有'C'柱留 –
確定。在任何情況下,如果我使用df.max(axis = 1,key = abs) 它不會取絕對值的最大值,而只是最大的正值 – gis20