我有几个数据帧。所有都是时间序列索引。 问题是,有些人缺少数据,我需要检查哪些数据库有不同的日期索引。 现在所有值都包含相同的值,只有一个或两个具有附加值或缺少一些值的情况,在这种情况下,我需要调用另一个数据提供程序来获取这些值其余的数据帧因此算法不会中断。
INDEX VAL
DF1
01-01-17 6.00
03-01-17 4.53
05-01-17 8.91
DF2
01-01-17 4.11
03-01-17 8.67
07-01-17 1.93
09-01-17 3.11
DF3
01-01-17 4.00
03-01-17 20.10
07-01-17 3.12
DF4
01-01-17 8.11
03-01-17 1.89
06-01-17 3.89
07-01-17 4.89
有数以百计的价值观,而且很难手工完成。
我想我正在寻找的是一种比较它们的方法,或者创建一种矩阵,向我展示我需要为每个df获得的值。
答案 0 :(得分:1)
让我们试一试 列表理解
date = pd.Timestamp('20160101')
df = pd.date_range('20160301', '20160831', freq='7D').to_series().reset_index()
df[0] = [pd.Timedelta('nat')]*25+[pd.Timedelta(days=99), pd.Timedelta(days=45)]
df.columns = ['outofservicedatetime', 'days_diff']
df
Out[258]:
outofservicedatetime days_diff
0 2016-03-01 NaT
1 2016-03-08 NaT
2 2016-03-15 NaT
3 2016-03-22 NaT
4 2016-03-29 NaT
5 2016-04-05 NaT
6 2016-04-12 NaT
7 2016-04-19 NaT
8 2016-04-26 NaT
9 2016-05-03 NaT
10 2016-05-10 NaT
11 2016-05-17 NaT
12 2016-05-24 NaT
13 2016-05-31 NaT
14 2016-06-07 NaT
15 2016-06-14 NaT
16 2016-06-21 NaT
17 2016-06-28 NaT
18 2016-07-05 NaT
19 2016-07-12 NaT
20 2016-07-19 NaT
21 2016-07-26 NaT
22 2016-08-02 NaT
23 2016-08-09 NaT
24 2016-08-16 NaT
25 2016-08-23 99 days
26 2016-08-30 45 days
%timeit df['days_diff'].fillna(df['outofservicedatetime']-date)
1.29 ms ± 41.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
df['days_diff'].fillna(df['outofservicedatetime']-date)
Out[260]:
0 60 days
1 67 days
2 74 days
3 81 days
4 88 days
5 95 days
6 102 days
7 109 days
8 116 days
9 123 days
10 130 days
11 137 days
12 144 days
13 151 days
14 158 days
15 165 days
16 172 days
17 179 days
18 186 days
19 193 days
20 200 days
21 207 days
22 214 days
23 221 days
24 228 days
25 99 days
26 45 days
Name: days_diff, dtype: timedelta64[ns]
%timeit df.loc[df['days_diff'].isnull(), 'days_diff'] = df['outofservicedatetime'] - date
2.46 ms ± 106 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
pd.concat
reindex
eval
答案 1 :(得分:0)
两种可能性:
1)看dataframe.resample。这将确保您在每个数据框中具有相同的索引值;任何缺失的行都将设置为nan。
2)使用dataframe.join来组合数据帧。使用how关键字可以指定合并的类型。在你的情况下,'外部'如果您没有"主索引"可能是正确的选择。有一个很好的description of merge, join, and concatenate可用。