gpt4 book ai didi

python - 使用 Python Pandas df.loc 定位部分变量值

转载 作者:行者123 更新时间:2023-12-01 06:29:12 25 4
gpt4 key购买 nike

我正在尝试使用 pandas 中的 df.loc 来定位数据框中的部分变量值。

在我的数据框中,时间和日期相结合例如

Time            Col1    Col2
1-1-2019 01:00 5 7
1-1-2019 02:00 6 9
1-2-2019 01:00 8 3

如果我使用df.loc[df['Time'] == ['1-1-2019']]我想找到该数据帧的前两列,即 1-1-2019 01:00 和 1-1-2019 02:00。

它给了我一个错误:长度必须匹配。公平地说,这对 pandas 来说是一个逻辑错误,因为我只输入日期,而不是时间。

有没有办法让搜索值部分可变?那么 pandas 会寻找 1-1-2019 01:00 和 1-1-2019 02:00 吗?

最佳答案

第一个想法是删除时间,最好通过 Series.dt.floor 设置为 0Series.dt.normalize :

df['Time'] = pd.to_datetime(df['Time'])
df1 = df.loc[df['Time'].dt.floor('d') == '2019-01-01']
#alternative
#df1 = df.loc[df['Time'].dt.normalize() == '2019-01-01']
print (df1)
Time Col1 Col2
0 2019-01-01 01:00:00 5 7
1 2019-01-01 02:00:00 6 9

或者按 Series.dt.date 比较日期:

from datetime import  date
df['Time'] = pd.to_datetime(df['Time'])
df1 = df.loc[df['Time'].dt.date == date(2019,1,1)]
#in some version should working
#df1 = df.loc[df['Time'].dt.date == '2019-01-01']

或者通过Series.dt.strftime转换为字符串YYYY-MM-DD并比较:

df['Time'] = pd.to_datetime(df['Time'])
df1 = df.loc[df['Time'].dt.strftime('%Y-%m-%d') == '2019-01-01']

关于python - 使用 Python Pandas df.loc 定位部分变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59983811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com