我正在使用熊猫分析财务记录。在日期范围内切片熊猫数据框
我有一个来自一个CSV文件看起来像这样一个DataFrame
:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 800 entries, 2010-10-27 00:00:00 to 2011-07-12 00:00:00
Data columns:
debit 800 non-null values
transaction_type 799 non-null values
transaction_date_raw 800 non-null values
credit 800 non-null values
transaction_description 800 non-null values
account_number 800 non-null values
sort_code 800 non-null values
balance 800 non-null values
dtypes: float64(3), int64(1), object(4)
我基于交易量选择一个子集:
c1 = df['credit'].map(lambda x: x > 1000)
milestones = df[c1].sort()
,并希望创建的切片原始DF基于里程碑之间的日期:
delta = dt.timedelta(days=1)
for i in range(len(milestones.index)-1):
start = milestones.index[i].date()
end = milestones.index[i+1].date() - delta
rng = date_range(start, end)
th将生成一个新的系列,其中包含我的里程碑之间的日期。
<class 'pandas.tseries.index.DatetimeIndex'>
[2010-11-29 00:00:00, ..., 2010-12-30 00:00:00]
Length: 32, Freq: D, Timezone: None
我跟了几种方法使用这些新系列(RNG)切开我的DF,但都失败了:
df.ix[start:end] or
df.ix[rng]
这引起了:IndexError:无效片
df.reindex(rng) or df.reindex(index=rng)
提出:例外:Reindexing只对唯一有价值的索引对象有效
x = [v for v in rng if v in df.index]
df[x]
df.ix[x]
df.index[x]
这也引起了无效片,也是如此:
df.truncate(start, end)
我是新来的大熊猫,我正在关注的书从奥赖利的提前释放,充分地享受它。任何指针将不胜感激。
我发现上面的“hackish”解决方案 – 2012-07-10 15:31:03