Python 按数据框中日期的最小值分组,返回纳秒而不是天
我正在尝试按对应单元格的最短日期对“Client Name”列的条目进行分组Python 按数据框中日期的最小值分组,返回纳秒而不是天,python,date,pandas,dataframe,Python,Date,Pandas,Dataframe,我正在尝试按对应单元格的最短日期对“Client Name”列的条目进行分组 Client Name Recency A -10 days B -4 days C -1 days A -5 days B -2 days C 0 days 所以最终的结果应该是 A -5 B
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[['recenty','Client Name']]
进行更改:
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
编辑:
您可以检查-可能是bug。我尝试了您的测试数据帧,并且值与您的不同-可能您正在使用 您可以尝试使用子集
df[['recenty','Client Name']]
进行更改:
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
编辑:
你可以检查-也许是bug