python - 删除具有相同日期时间的行

标签 python pandas

我怎样才能只得到同一分钟的行?秒值无关紧要。似乎可以使用df.drop(index=2)之类的方法删除该行,但是数据太多了,要一个一个地删除。

import json
import math
from pandas.io.json import json_normalize
import pandas as pd
a=open(r'C:\work\kenkyuu\FITBIT\MyFitbitData (4)\AswadMdnor\user-site-export\heart_rate-2019-11- 
17.json')
b=json.load(a)
df = json_normalize(b)
df = df.rename(columns={'value.bpm':'bpm','value.confidence':'confidence'})
print(df)

    dateTime           bpm           confidence
11/17/19 02:28:05  113           0
11/17/19 02:28:17   70           0
11/17/19 02:28:31   70           0
11/17/19 02:28:42   70           0
11/17/19 02:29:29   70           0
11/17/19 02:29:46   70           0
11/17/19 02:30:43   70           0
11/17/19 02:32:13   70           0
11/17/19 02:49:39   70           0

我希望得到这样的输出:

dateTime           bpm           confidence
11/17/19 02:28:05  113           0
11/17/19 02:29:29   70           0
11/17/19 02:30:43   70           0
11/17/19 02:32:13   70           0
11/17/19 02:49:39   70           0

这是字典形式的数据,您可以使用它来重新创建 DataFrame:

{'dateTime': {0: '11/17/19 02:28:05', 1: '11/17/19 02:28:17', 2: '11/17/19 02:28:31', 3: '11/17/19 02:28:42', 4: '11/17/19 02:29:29', 5: '11/17/19 02:29:46', 6: '11/17/19 02:30:43', 7: '11/17/19 02:32:13', 8: '11/17/19 02:49:39', 9: '11/17/19 02:49:49', 10: '11/17/19 02:49:54', 11: '11/17/19 02:49:59', 12: '11/17/19 02:50:04', 13: '11/17/19 02:50:09', 14: '11/17/19 02:50:14', 15: '11/17/19 02:50:24', 16: '11/17/19 02:50:29', 17: '11/17/19 02:50:34', 18: '11/17/19 02:50:39', 19: '11/17/19 02:50:44', 20: '11/17/19 02:50:49', 21: '11/17/19 02:51:04', 22: '11/17/19 02:51:09', 23: '11/17/19 03:04:05', 24: '11/17/19 03:04:33', 25: '11/17/19 11:14:27', 26: '11/17/19 11:14:42', 27: '11/17/19 11:14:52', 28: '11/17/19 11:15:01', 29: '11/17/19 11:15:06', 30: '11/17/19 11:15:21'}, 'bpm': {0: 113, 1: 70, 2: 70, 3: 70, 4: 70, 5: 70, 6: 70, 7: 70, 8: 70, 9: 67, 10: 62, 11: 57, 12: 58, 13: 60, 14: 60, 15: 62, 16: 63, 17: 65, 18: 66, 19: 67, 20: 65, 21: 66, 22: 67, 23: 69, 24: 70, 25: 70, 26: 70, 27: 70, 28: 70, 29: 70, 30: 70}, 'confidence': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 1, 10: 1, 11: 2, 12: 2, 13: 2, 14: 1, 15: 1, 16: 1, 17: 1, 18: 1, 19: 1, 20: 1, 21: 1, 22: 1, 23: 0, 24: 0, 25: 0, 26: 0, 27: 1, 28: 1, 29: 0, 30: 1}}

最佳答案

我将舍入秒然后检查重复项然后子集或删除舍入日期时间的重复项

df[~df['dateTime'].dt.round('min').duplicated()]

关于python - 删除具有相同日期时间的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59044112/

相关文章:

Python JSON 无法提取和打印文本标识符

python - Bash 脚本与用于 Shell-Command-Heavy 实用程序的 Python 脚本的优点

python - 如何创建另一列的部分重复?

python - 如何通过 python 将我的 xlsx 文件批量转换为 CSV

python - Pandas : difference() methode between polygon and points

php - 如何从 Yii 网页和 Python 执行 MonkeyRunner

python - 从引用列表中过滤多个列表

python - Pandas 将 6 月 1 日至 7 月 30 日定义为季节性年份,而不是 1 月 1 日至 12 月 31 日

python - 在条件下合并来自两个不同数据帧的两列,python

Python:在 lambda 中使用 lambda 返回 lambda 对象