如何在 Pandas 数据框中获取最后一行日期时间?
How to grab last row of datetime in Pandas dataframe?
II 目前有一个非常大的 .csv,有 200 万行。我读过 csv,只有 2 列,数字和时间戳(在 unix 中)。我的目标是获取每天的最后一个最大数字(例如 1/1/2021、1/2/2021 等)
我已将 unix 转换为 datetime 并使用了 df.groupby('timestamp').tail(1) 但我仍然无法 return 每天最后一行。我是不是用错了groupby?
import pandas as pd
def main():
df = pd.read_csv('blocks.csv', usecols=['number', 'timestamp'])
print(df.head())
df['timestamp'] = pd.to_datetime(df['timestamp'],unit='s')
x = df.groupby('timestamp').tail(1)
print(x)
if __name__ == '__main__':
main()
期望的输出:
数字 时间戳
11,509,218 2021-01-01
11,629,315 2021-01-02
11,782,116 2021-01-03
12,321,123 2021-01-04
...
你似乎没有指定聚合函数,也没有指定聚合频率(小时、天、分钟?)
我的看法是
df.resample("D", on="timestamp").max()
有几种方法可以按时间分组,或者
df.groupby(pd.Grouper(key='timestamp', axis=0,
freq='D', sort=True)).max()
此致
“问题”出在石斑鱼上,使用.dt.date
正确分组(假设你的数据已经排序):
x = df.groupby(df['timestamp'].dt.date).tail(1)
print(x)
II 目前有一个非常大的 .csv,有 200 万行。我读过 csv,只有 2 列,数字和时间戳(在 unix 中)。我的目标是获取每天的最后一个最大数字(例如 1/1/2021、1/2/2021 等)
我已将 unix 转换为 datetime 并使用了 df.groupby('timestamp').tail(1) 但我仍然无法 return 每天最后一行。我是不是用错了groupby?
import pandas as pd
def main():
df = pd.read_csv('blocks.csv', usecols=['number', 'timestamp'])
print(df.head())
df['timestamp'] = pd.to_datetime(df['timestamp'],unit='s')
x = df.groupby('timestamp').tail(1)
print(x)
if __name__ == '__main__':
main()
期望的输出:
数字 时间戳
11,509,218 2021-01-01
11,629,315 2021-01-02
11,782,116 2021-01-03
12,321,123 2021-01-04
...
你似乎没有指定聚合函数,也没有指定聚合频率(小时、天、分钟?) 我的看法是
df.resample("D", on="timestamp").max()
有几种方法可以按时间分组,或者
df.groupby(pd.Grouper(key='timestamp', axis=0,
freq='D', sort=True)).max()
此致
“问题”出在石斑鱼上,使用.dt.date
正确分组(假设你的数据已经排序):
x = df.groupby(df['timestamp'].dt.date).tail(1)
print(x)