我需要帮助分配日期索引(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
理想的结果是:
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
对于DateCount列,我知道我必须对ID进行分组并对日期进行排序,但我不确定如何分配索引。至于Alias专栏,我想知道有一种通过分组来分配价值的方法。
谢谢!
答案 0 :(得分: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
答案 1 :(得分: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