pandas 为什么按日期字符串索引DataFrame会影响列返回类型?

q5lcpyga  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(80)

在研究why int columns are sometimes returned as floats时,我们发现了以下令人惊讶的行为:

import pandas as pd
import numpy as np
import datetime

df = pd.DataFrame(data=list(zip(*[np.random.randint(1,3,5), np.random.random(5)])), index=pd.date_range('2020-01-01','2020-01-05').tolist(), columns=['a', 'b'])
df['c'] = np.ceil(df.a/df.b).astype(int)
df.loc['20200101', 'c']  # << Returns value as float
df.loc[datetime.datetime(2020,1,1), 'c']  # << Returns value as int

为什么使用索引值"20200101"会导致c值作为float返回(即使列的类型为int),而使用索引值datetime.datetime(2020,1,1)会导致它作为int返回?

shyt4zoc

shyt4zoc1#

当我做了

print(type(df.loc['20200101', 'c']))
print(type(df.loc[datetime.datetime(2020,1,1), 'c']))

我得到

<class 'numpy.float64'>
<class 'numpy.float64'>

我在Visual Studio代码内部人员1.75.0上使用Python 3.9.7

相关问题