在数据框中创建一个新列,其增量编号基于另一列

时间:2017-05-11 18:50:48

标签: python dataframe apply

考虑下面的pandas DataFrame:

from pandas import Timestamp
df = pd.DataFrame({
    'day': [Timestamp('2017-03-27'),
            Timestamp('2017-03-27'),
            Timestamp('2017-04-01'),
            Timestamp('2017-04-03'),
            Timestamp('2017-04-06'),
            Timestamp('2017-04-07'),
            Timestamp('2017-04-11'),
            Timestamp('2017-05-01'),
            Timestamp('2017-05-01')],
 'act_id': ['916298883', 
            '916806776',
            '923496071',
            '926539428',
            '930641527',
            '931935227',
            '937765185',
            '966163233',
            '966417205'] 
})

如您所见,在7天内分发了9个唯一ID。

我正在寻找添加两个新列的方法。

  • 第一栏:
  

每个新日的增量编号。例如1表示2017-03-27'(同一天的相同数字),2表示' 2017-04-01' 3表示' 2017-04-03& #39;等。

  • 第二栏:
  

每天每个新act_id的增量编号。例如1表示' 916298883' 2表示' 916806776' (链接到同一天' 2017-03-27'),1为' 923496071',1为' 926539428'等。

决赛桌应该看起来像this

我已经尝试使用apply和函数构建第一列,但它并没有按预期工作。

#Create helper function to give index number to a new column
counter = 1
def giveFlag(x):
    global counter
    index = counter
    counter+=1
    return index

然后:
    # Create day flagger column
    df_helper['day_no'] = df_helper['day'].apply(lambda x: giveFlag(x))

1 个答案:

答案 0 :(得分:0)

试试这个:

Code:
echo on

cmdkey.exe /list > "%TEMP%\List.txt"
findstr.exe Target "%TEMP%\List.txt" > "%TEMP%\tokensonly.txt"
FOR /F "tokens=1,2 delims= " %%G IN (%TEMP%\tokensonly.txt) DO cmdkey.exe /delete:%%H
del "%TEMP%\List.txt" /s /f /q
del "%TEMP%\tokensonly.txt" /s /f /q

pause