マッチングからの値ではNaNを置き換えますパンダマルチインデックスの行と列:以下の任意の行
import pandas as pd
import numpy as np
df=pd.DataFrame({'County':['A','B','A','B','A','B','A','B','A','B'],
'Hospital':['a','b','e','f','i','j','m','n','b','r'],
'Enrollment':[44,55,95,54,81,54,89,76,1,67],
'Year':['2012','2012','2012','2012','2012','2013',
'2013','2013','2013','2013']})
d2=pd.pivot_table(df,index=['County','Hospital'],columns=['Year'])#.sort_columns
d2
Enrollment
Year 2012 2013
County Hospital
A a 44.0 NaN
b NaN 1.0
e 95.0 NaN
i 81.0 NaN
m NaN 89.0
B b 55.0 NaN
f 54.0 NaN
j NaN 54.0
n NaN 76.0
r NaN 67.0
を、このような「B」として病院が複数回存在し、それが前年度のデータがない場合( 'b'の最初の出現)、私は前の年の値を他の行( 'b')に割り当て、最初の年のデータが含まれていない 'b'の行をこのように削除したい:
Enrollment
Year 2012 2013
County Hospital
A a 44.0 NaN
b 55.0 1.0
e 95.0 NaN
i 81.0 NaN
m NaN 89.0
B f 54.0 NaN
j NaN 54.0
n NaN 76.0
r NaN 67.0
これまでのところ、重複行を特定して削除することはできますが、NaNを値wここで必要:
d2=d2.reset_index()
d2['dup']=d2.duplicated('Hospital',keep=False)
旗、削除のために、最新年のデータはありませんとの重複病院:
Hospital=d2.columns.levels[0][1]
Y1=d2.columns.levels[1][0]
Y2=d2.columns.levels[1][1]
d2['Delete']=np.nan
d2.loc[(pd.isnull(d2.Enrollment[Y2]))&(d2['dup']==True),'Delete']='Yes'
は、インデックスをリセットした後、重複する病院を特定します
削除する行以外はすべて削除してください。
d2=d2.loc[d2['Delete']!='Yes']
閉じるが、病院の行を維持する基準は、最初の年のデータがなく、2年目のデータを保持している基準に基づいている(2つの基準を満たすものが保持する基準)。 –