2016-10-27 7 views
0

私はデータフレームrowおよびcolumnを日付順に索引付けしています。保持する状態は、row-index-date >= column-index-dateの場合です。以下は、初期のデータフレームを取得するためのコードです:パンダスライス下三角、各列を独立して再整列、再整列および連結する列

2011-01-31 2011-02-28 2011-03-31 2011-04-30 2011-05-31 
0 0.548814 0.437587 0.568045 0.778157 0.118274 
1 0.645894 NaN   0.832620 0.780529 NaN 
2 0.791725 0.020218 0.461479 NaN   NaN 
3 0.087129 NaN   NaN   NaN   NaN 
4 NaN   NaN   NaN   NaN   NaN 

新しいインデックスが遅れrow-index表し - からcolumn-indexを:

import pandas as pd 
import numpy as np 

np.random.seed(0) 


rng = pd.date_range('1/1/2011', periods=5, freq='M') 
df = pd.DataFrame(np.random.random((len(rng), len(rng))), index=rng, columns=rng) 
idx = df.apply(lambda x: x.index >= x.name, axis=0) 
df = df[idx] 
df.ix[4, 0:2] = np.nan 
df.ix[2, 1] = np.nan 
print(df) 

は、私は次の形式に変更したい

  2011-01-31 2011-02-28 2011-03-31 2011-04-30 2011-05-31 
2011-01-31 0.548814 NaN   NaN   NaN   NaN 
2011-02-28 0.645894 0.437587 NaN   NaN   NaN 
2011-03-31 0.791725 NaN   0.568045 NaN   NaN 
2011-04-30 0.087129 0.020218 0.832620 0.778157 NaN 
2011-05-31 NaN   NaN   0.461479 0.780529 0.118274 

を与えます元のデータフレーム。このインデックスは列ごとに異なることに注意してください。私は、各列に新しいインデックスを割り当て、その後、私のため

ここ

答えて

0

が働いていた何の列を再編成に苦しんでいます:

def align_columns_by_lag(x): 
    """Keep Lower triangular, re-indexed columns 

    """ 
    xlen = len(x) 
    idx = x.index >= x.name 
    newx = x[idx] 
    newx.reset_index(drop=True, inplace=True) 
    newx.reindex(range(xlen), fill_value=np.nan) 

    return newx 

df2 = df.apply(align_columns_by_lag, axis=0) 
df2 
関連する問題