2017-12-18 14 views
0

私は、日付インデックス(DayCount)の割り当てと代替の名前付けカラム(別名)の追加について助けが必要です。
DFパンダグループとカウント

ID Date Name 

111 1/1/17 Abc 

111 1/3/17 xyz 

111 1/2/17 ADC 

222 1/5/17 ABC 

222 1/6/17 XYZ 

333 1/10/17 ijk 

理想的な結果は次のようになります:私はこのような何か持ってDateCount欄について

ID Date DateCount Name Alias 

111 1/1/17 1 Abc Adam 

111 1/3/17 3 xyz X 

111 1/2/17 2 ADC Adam 

222 1/5/17 1 ABC Adam 

222 1/6/17 2 XYZ X 

333 1/10/17 1 ijk Others 

を、私は、グループIDに知っていると日付を並べ替えるが、私はよインデックスの割り当て方法がわからないエイリアス列については、グループ分けで値を割り当てる方法があると思います。

ありがとうございます!

答えて

1

IIUC ....

d={'X':'X','A':'Adam'} 

df['Datecount']=df.sort_values('Date').groupby('ID').cumcount().add(1) 
df 
Out[324]: 
    ID  Date Name Datecount 
0 111 2017-01-01 Abc   1 
1 111 2017-01-03 xyz   3 
2 111 2017-01-02 ADC   2 
3 222 2017-01-05 ABC   1 
4 222 2017-01-06 XYZ   2 
5 333 2017-01-10 ijk   1 

df['Alias']=df.Name.str[0].str.upper().map(d).fillna('Other') 
df 
Out[329]: 
    ID  Date Name Datecount Alias 
0 111 2017-01-01 Abc   1 Adam 
1 111 2017-01-03 xyz   3  X 
2 111 2017-01-02 ADC   2 Adam 
3 222 2017-01-05 ABC   1 Adam 
4 222 2017-01-06 XYZ   2  X 
5 333 2017-01-10 ijk   1 Other 
+0

DateCountのCOLは素晴らしい作品。しかし、私はdictを使用するための構文エラーがあります。私はそれをd = {'X': 'X'、 'A': 'Adam'}に変更しました。 – TylerNG

+0

@TylerNGはそれを修正しました、もう一度やり直せますか? – Wen

+1

私は今問題が何かを考え出しました。いつものようにありがとう! – TylerNG

1
pd.DataFrame({'ID': [111,111,111], 'Date': ['2007-01-01', '2017-01-03', '2007-01-02'],'Name':['Abc','xyz','rst']}) 
    Date   ID Name 
0 2007-01-01 111 Abc 
1 2017-01-03 111 xyz 
2 2007-01-02 111 rst 

idx = 1 
cols = [1,1,1] 
idx2 = 4 
colAlias = ['Adam','x','Adam'] 
df.insert(loc=1, column='DateCount', value=cols) 
df.insert(loc=4, column='Alias', value=colAlias) 

     Date DateCount ID Name Alias 
0 2007-01-01 1  111 Abc  x 
1 2017-01-03 1  111 xyz Adam 
2 2007-01-02 1  111 rst Adam 
関連する問題