Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按数据框中日期的最小值分组,返回纳秒而不是天_Python_Date_Pandas_Dataframe - Fatal编程技术网

Python 按数据框中日期的最小值分组,返回纳秒而不是天

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”列的条目进行分组

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