使用 Pandas 检索作为日期时间的值(通过按行/列过滤选择)

时间:2021-03-08 15:14:22

标签: python excel pandas dataframe datetime

我需要将日期时间保存到 Excel 文件中,以便在再次读取 Excel 文件后,可以将它们与其他日期时间进行比较。这是一个最小的例子:

import pandas as pd, datetime
df = pd.DataFrame({'A': [1, 2],
                   'B': [datetime.datetime(2000,1,1,1,2,3), 
                         datetime.datetime(2010,1,1,1,2,3)]})
df.to_excel('test.xlsx')                # save to Excel file
df2 = pd.read_excel('test.xlsx')        # load from Excel file
print(df2)
t = df2.loc[df['A'] == 2, 'B']         # select the value in col B by filtering rows
L = [t, datetime.datetime(2020,1,1,1,2,3)]
print(sorted(L))

这会产生以下错误:

<块引用>

ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

检索 pandas 的值作为日期时间的标准 t 方法是什么?

1 个答案:

答案 0 :(得分:2)

您需要一个元素系列的标量:

#select first value if always matched at least one row
t = df2.loc[df['A'] == 2, 'B'].iat[0]

#general solution for return default value if no match
t = next(iter(df2.loc[df['A'] == 2, 'B']), 'no match')

EDIT:如果通过 DataFrame.set_indexA 列创建索引并且始终匹配此处的值 2 和列 B 是可能的,请使用 DataFrame.loc 进行选择索引和列名称:

df = df2.set_index('A')
t = df.loc[2, 'B']
相关问题