如果标题有点令人困惑,请原谅我。
假设我有test.h5
。下面是使用读取该文件的结果df.read_hdf('test.h5', 'testdata')
0 1 2 3 4 5 6
0 123 444 111 321 NaN NaN NaN
1 12 234 113 67 21 32 900
3 212 112 543 321 45 NaN NaN
我想选择最后一个非 Nan 列。我的预期结果是这样的
0 321
1 900
2 45
我还想选择除最后一个非 NaN 列之外的所有列。我的预期结果或许是这样的。它可能在 numpy 数组中,但我还没有找到任何解决方案。
0 1 2 3 4 5 6
0 123 444 111
1 12 234 113 67 21 32
3 212 112 543 321
我在网上搜索发现df.iloc[:, :-1]
用于读取除最后一列之外的所有列和df.iloc[:, -1]
用于阅读最后一栏。
我当前使用这两个命令的结果是这样的:
1. 用于读取除最后一列之外的所有列
0 1 2 3 4 5
0 123 444 111 321 NaN NaN
1 12 234 113 67 21 32
3 212 112 543 321 45 NaN
2.用于阅读最后一栏
0 NaN
1 900
2 Nan
我的问题是,pandas 中是否使用任何命令或查询来解决这些情况?
感谢您的任何帮助和建议。
您可以使用排序来满足您的条件,即
ndf = df.apply(lambda x : sorted(x,key=pd.notnull),1)
这将给
0 1 2 3 4 5 6
0 NaN NaN NaN 123.0 444.0 111.0 321.0
1 12.0 234.0 113.0 67.0 21.0 32.0 900.0
3 NaN NaN 212.0 112.0 543.0 321.0 45.0
现在您可以选择最后一列,即
ndf.iloc[:,-1]
0 321.0
1 900.0
3 45.0
Name: 6, dtype: float64
ndf.iloc[:,:-1].apply(lambda x : sorted(x,key=pd.isnull),1)
0 1 2 3 4 5
0 123.0 444.0 111.0 NaN NaN NaN
1 12.0 234.0 113.0 67.0 21.0 32.0
3 212.0 112.0 543.0 321.0 NaN NaN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)