Sta Precip1hr Precip5min Temp DewPnt WindSpd WindDir AtmPress
Date
2001-01-01 00:00:00 KPDX 0 0 4 3 0 0 30.31
2001-01-01 00:05:00 KPDX 0 0 4 3 0 0 30.30
2001-01-01 00:10:00 KPDX 0 0 4 3 4 80 30.30
2001-01-01 00:15:00 KPDX 0 0 3 2 5 90 30.30
2001-01-01 00:20:00 KPDX 0 0 3 2 10 110 30.28
import pandas
import datetime
startdate = datetime.datetime(2001, 1, 1, 0, 0)
enddate = datetime.datetime(2001, 1, 1, 5, 0)
index = pandas.DatetimeIndex(start=startdate, end=enddate, freq='H')
data1 = {'A' : range(6), 'B' : range(6)}
data2 = {'A' : [20, -30, 40], 'B' : [-50, 60, -70]}
df1 = pandas.DataFrame(data=data1, index=index)
df2 = pandas.DataFrame(data=data2, index=index[:3])
df3 = df2.append(df1)
df3
A B
2001-01-01 00:00:00 20 -50
2001-01-01 01:00:00 -30 60
2001-01-01 02:00:00 40 -70
2001-01-01 03:00:00 3 3
2001-01-01 04:00:00 4 4
2001-01-01 05:00:00 5 5
2001-01-01 00:00:00 0 0
2001-01-01 01:00:00 1 1
2001-01-01 02:00:00 2 2
A B
2001-01-01 00:00:00 0 0
2001-01-01 01:00:00 1 1
2001-01-01 02:00:00 2 2
2001-01-01 03:00:00 3 3
2001-01-01 04:00:00 4 4
2001-01-01 05:00:00 5 5
我建议对熊猫索引本身使用复制的方法:
df3 = df3[~df3.index.duplicated(keep='first')]
虽然所有其他方法都可以工作,但.drop_duplicates
对于所提供的示例来说是性能最差的。此外,虽然groupby方法的性能稍差,但我发现复制的方法更易读。
使用提供的示例数据:
>>> %timeit df3.reset_index().drop_duplicates(subset='index', keep='first').set_index('index')
1000 loops, best of 3: 1.54 ms per loop
>>> %timeit df3.groupby(df3.index).first()
1000 loops, best of 3: 580 µs per loop
>>> %timeit df3[~df3.index.duplicated(keep='first')]
1000 loops, best of 3: 307 µs per loop
>>> %timeit df1.groupby(level=df1.index.names).last()
1000 loops, best of 3: 771 µs per loop
>>> %timeit df1[~df1.index.duplicated(keep='last')]
1000 loops, best of 3: 365 µs per loop
我试图做为。具有和其他在中具有。这是我的代码: 我得到这个错误: 什么,我哪里做错了?
我开始学习熊猫,发现了一个我似乎无法解决的问题。我正在从csv文件加载数据,需要删除一些与几个字符串匹配的行。 CSV: 我所尝试的: 但我得到的错误如下: 我错过了什么?另外,如果我想传递一个列表并从列表中删除所有匹配字符串的行,该怎么办?例子:
问题内容: 我创建了一个从,当我重新采样一些数据,象这样一个数:其中是: 这产生了一个看起来像这样的系列: 索引看起来像: 我不希望第二列作为索引。理想情况下,我将第1列作为“日期”,将第2列作为“销售”(删除索引的第二层)。我不太清楚如何重新配置索引。 问题答案: 只需致电: 有多种删除列的方法: 调用两次并指定一列: 重置索引后删除列: 重置后致电: 然后,在重置索引后,只需重命名列
问题内容: 我有一个看起来像这样的熊猫数据框。 我想确定cat和bat是重复的相同值,因此想删除一个记录并仅保留第一条记录。结果数据帧应该只有一个。 问题答案: 使用具有与列的列表上检查重复和保持第一重复的。 如果是: 结果: 然后: 结果:
我正在努力去除nans。已经花了一些时间寻找解决方案,但似乎没有任何效果。 下面我附上我的代码样本。整个笔记本可以在我的GitHub这里找到:https://GitHub . com/jarsonX/Temp _ files/blob/main/W3-探索性数据分析(1)。ipynb 我错过了什么? 更新: 我设法过滤掉了南斯:
我不确定我在哪里误入歧途,但我似乎无法重置数据帧上的索引。 当我运行时,我得到下面的输出: 如您所见,数据帧是一个切片,因此索引超出了范围。我想做的是重置此数据帧的索引。所以我运行。这将产生以下结果: 这看起来像是一个新的索引,但事实并非如此。运行同样,索引仍然相同。试图使用或会导致数据帧出现问题。 如何才能真正重置索引?