从pandas dataframe和reshape表中删除NaN值

use*_*127 2 python dataframe python-2.7 pandas

我有一个500*100的Pandas DataFrame,有很多NaN值. 在此输入图像描述 我知道每列将包含495个NaN和5个实数值.我想重塑表格只包含5行的实际值,因此最终尺寸应为5*100.

我知道有很多关于如何删除NaN值的问题,但我还没有找到一种方法来相应地重塑表格.

提前致谢.

jez*_*ael 9

你需要applydropna,只需要创建numpy array和重新分配Series复位指数:

df.apply(lambda x: pd.Series(x.dropna().values))
Run Code Online (Sandbox Code Playgroud)

样品:

df = pd.DataFrame({'B':[4,np.nan,4,np.nan,np.nan,4],
                   'C':[7,np.nan,9,np.nan,2,np.nan],
                   'D':[1,3,np.nan,7,np.nan,np.nan],
                   'E':[np.nan,3,np.nan,9,2,np.nan]})

print (df)
     B    C    D    E
0  4.0  7.0  1.0  NaN
1  NaN  NaN  3.0  3.0
2  4.0  9.0  NaN  NaN
3  NaN  NaN  7.0  9.0
4  NaN  2.0  NaN  2.0
5  4.0  NaN  NaN  NaN

df1 = df.apply(lambda x: pd.Series(x.dropna().values))
print (df1)
     B    C    D    E
0  4.0  7.0  1.0  3.0
1  4.0  9.0  3.0  9.0
2  4.0  2.0  7.0  2.0
Run Code Online (Sandbox Code Playgroud)