在Pandas中通过一个指定列移动行

时间:2016-06-06 23:25:55

标签: python pandas

我有一个这样的文件:

value1, value2, value3, value4, value5
 NAN      NAN   value8, value9, value0
value6, value7,  NAN      NAN     NAN

我想推出第3行来执行以下操作:

value1, value2, value3, value4, value5
value6, value7, value8, value9, value0
NAN      NAN     NAN      NAN     NAN

我还希望这些行下方的行也向上移动。

这是如何在熊猫中完成的?

2 个答案:

答案 0 :(得分:0)

这应该有效:

df = pd.DataFrame(
    {'value1': {0: np.nan, 1: 'value6'},
     'value2': {0: np.nan, 1: 'value7'},
     'value3': {0: 'value8', 1: np.nan},
     'value4': {0: 'value9', 1: np.nan},
     'value5': {0: 'value0', 1: np.nan}}
)

print df
print
print df.iloc[0, :].combine_first(df.iloc[1, :])

   value1  value2  value3  value4  value5
0     NaN     NaN  value8  value9  value0
1  value6  value7     NaN     NaN     NaN

value1    value6
value2    value7
value3    value8
value4    value9
value5    value0
Name: 0, dtype: object

答案 1 :(得分:0)

尝试 df.fillna() 方法。如果提供了数据帧定义和代码,它也会有所帮助。

>>> import pandas as pd;
>>> import numpy as np;
>>> df = pd.DataFrame({'r1':['v1','v2','v3','v4','v5'],'r2':[np.NaN,np.NaN,'v8','v9','v0'],'r3':['v6','v7',np.NaN,np.NaN,np.NaN]})
>>> df = df.T
>>> df
      0    1    2    3    4
r1   v1   v2   v3   v4   v5
r2  NaN  NaN   v8   v9   v0
r3   v6   v7  NaN  NaN  NaN
>>> df.fillna(method='bfill')
     0   1    2    3    4
r1  v1  v2   v3   v4   v5
r2  v6  v7   v8   v9   v0
r3  v6  v7  NaN  NaN  NaN