【发布时间】:2014-03-25 13:45:07
【问题描述】:
我正在尝试使用多索引数据框作为字典以快速检索感兴趣的行。我正在使用 .ix[] 方法通过它的多索引选择一行,但是当键不存在时我遇到异常。有没有办法获取具有默认返回值的行?还是我必须使用 try-except 组合来完成我需要的操作?
例子:
df = DataFrame({'a':[1,2,3],'b':[1,2,3],'c':[1,2,3]})
df.set_index(['a','b'])
c
a b
1 1 1
2 2 2
3 3 3
现在尝试df.ix[1,5] 时出现异常,希望获得默认值。
编辑:
这是首先提出问题的原因。我有 2 个大数据框(一个有 20,000 行,另一个有 500,000 行)。两个表中的每一行都标记了一个单词识别事件。这些列是“fileName”、“Word”、“startTime”、“endTime”。
我想要做的是找出小 df (df1) 中的哪个事件也在 df2 中出现。问题是两个表中的时间是不同的。例如:
df1
fileName Word startTime EndTime
0 file1 additional 149640 150310
1 file1 additional 316430 316900
2 file1 additional 174180 174640
3 file2 additional 161900 162460
4 file2 additional 97150 97600
和df2:
df2
fileName Word startTime EndTime
0 file1 additional 149717 150406
1 file1 additional 316507 316996
2 file1 additional 174257 174736
3 file2 additional 201977 202556
4 file2 additional 97227 97696
您可以看到事件 0、1、2 和 4 是相同的事件,尽管时间略有不同。如果它们的开始和结束时间与一些小的公差相似,我认为它们是相同的。 3 事件不符合该容忍度,因此不应被视为同一事件。
我完成这项任务的方法:
- 按 fileName 和 Word 列索引大数据框 (df2)。
- 遍历 df1 的行并针对每一行:
- 使用行 fileName 和 Word 值在 df2 中选择适当的子集
- 遍历 df2 子集的行并查找满足时间容差的事件
- 如果在 df2 中发现此类事件,则返回 True。否则返回假。
我很乐意研究不同的方法。
【问题讨论】:
标签: pandas