我尝试对该列的条目进行分组'客户名称'通过最小日期相应的单元格。
Client Name Recency
A -10 days
B -4 days
C -1 days
A -5 days
B -2 days
C 0 days
所以最终的结果应该是
A -5
B -2
C 0
当我检查我的“新近度”的类型时。我明白了:
>> df['recency'].dtype
dtype('<m8[ns]')
我觉得我的问题是因为我的日子是几纳秒?但我发现这很奇怪,因为它在专栏中写了几天。
然而,当我进行分组时:
>> df.groupby(['Client Name'], sort=False)['recency'].min()
A -73785600000000000
B -345600000000000
C 0
这让我相信我减去了纳秒,而不是几天。
为什么数据帧的列会变为纳秒?我如何返回天的最小值而不是纳秒?
由于
答案 0 :(得分:0)
我尝试测试数据框,min
值与您不同 - 可能您使用的是max
。
您可以尝试使用子集df[['Recency','Client Name']]
更改groupby
:
print df
Client Name Recency
0 A -10 days
1 B -4 days
2 C -1 days
3 A -5 days
4 B -2 days
5 C 0 days
print df[['Recency','Client Name']].groupby(['Client Name'], sort=False).min()
Recency
Client Name
A -10 days
B -4 days
C -1 days
如果您需要删除文字days
,请将timedelta
转换为int
:
df['RecencyNo'] = (df['Recency'] / np.timedelta64(1, 'D')).astype(int)
print df
Client Name Recency RecencyNo
0 A -10 days -10
1 B -4 days -4
2 C -1 days -1
3 A -5 days -5
4 B -2 days -2
5 C 0 days 0
print df.groupby(['Client Name'], sort=False)['RecencyNo'].min()
Client Name
A -10
B -4
C -1
Name: RecencyNo, dtype: int32
编辑:
您可以查看issue 5724
- 也许是错误。