Pandas loc仅适用于对象类型

时间:2018-07-19 04:33:53

标签: python pandas dataframe

我有一个数据框,表示来自我收集的加速度计的数据。我正在尝试将2个单独的数据帧组合到一个文件中,其中一个具有加速度计数据。我试图在此数据帧中查找特定时间戳的x,y,z值。我尝试使用df.loc,但是它仅适用于具有对象数据类型的列,在我的情况下是“ date”(我不必费心将其更改为datetime,因为我不需要使用它)。

time      timedelta64[ns]
date               object
x_axis            float64
y_axis            float64
z_axis            float64
dtype: object

我正在使用此代码按时间查找行:

test_df = dataset.set_index('time')
print(test_df.dtypes)
test_df.loc[18:40:01]

这是我的加速度计数据框

time    date    x_axis  y_axis  z_axis
1.0 18:40:01    15/7/2018   0.776363    -1.106174   -7.898244
2.0 18:40:02    15/7/2018   1.503269    0.368612    -4.248112
3.0 18:40:03    15/7/2018   1.018665    2.070288    -3.869580

但是它返回错误

KeyError: 'the label [0 days 18:40:01] is not in the [index]'

如果我尝试通过使用loc的x_axis列中的某个值来查找行,也会发生同样的事情

在下面添加的print(test_df.index)

EDIT 结果

Index(['18:40:1', '18:40:2', '18:40:3', '18:40:4', '18:40:5', '18:40:6',
       '18:40:7', '18:40:8', '18:40:9', '18:40:10',
       ...
       '17:20:40', '17:20:41', '17:20:42', '17:20:43', '17:20:44', '17:20:45',
       '17:20:46', '17:20:47', '17:20:48', '17:20:49'],
      dtype='object', name='time', length=80225)

1 个答案:

答案 0 :(得分:0)

有问题需要将索引转换为test_df.index = pd.to_timedelta(test_df.index)

0

或通过删除最后一个df = test_df.loc['18:40:1'] 来更改选择的字符串:

@RequestMapping(value = "/api/Policies", method = RequestMethod.GET)
public ResponseEntity<List<Policies>> getPolicy(Principal principal) {
    System.out.println("Prnicipal: " + principal.getName());        
}