私はpandas.Series
を持っています。各行のdtypeはリストオブジェクトです。例えば。私は行ごとのリストにnan
を削除するにはどうすればよいdtypeがリストであるPandasシリーズからNaNを削除するにはどうすればよいですか?
>>> import numpy as np
>>> import pandas as pd
>>> x = pd.Series([[1,2,3], [2,np.nan], [3,4,5,np.nan], [np.nan]])
>>> x
0 [1, 2, 3]
1 [2, nan]
2 [3, 4, 5, nan]
3 [nan]
dtype: object
?
所望の出力は次のようになります。
>>> x
0 [1, 2, 3]
1 [2]
2 [3, 4, 5]
3 []
dtype: object
これは動作します:
>>> x.apply(lambda y: pd.Series(y).dropna().values.tolist())
0 [1, 2, 3]
1 [2.0]
2 [3.0, 4.0, 5.0]
3 []
dtype: object
は、ラムダを使用してシリーズをリストに変換し、NaN
を落とした後、抽出よりも簡単な方法はあります値は再びリストに戻りますか?
'lambda'と' IF-else'条件はありません、filter' 'に簡略化されることができるはずですか? – alvas
はい、あなたは正しいです。私は解決策を追加する。 – jezrael
@jezraelただ1つの 'lambda'を持つソリューション:' x.apply(lambda y:list(filter(np.isfinite、y))) '。 – DyZ