python - 使用 get_loc 通过遍历 Pandas 中的数据框来获取多个值的索引
问题描述
Events
是以日期为索引的 DataFrame。它看起来像这样:
co_code
co_stkdate
2009-03-17 11
2010-02-03 11
2011-02-14 363
2015-01-09 363
2010-10-15 365
residual
是以日期为索引的另一个数据框,包含数据框 co_code 中的元素events
作为列名。残差看起来像这样(有 700 多个列,但我发布了 3 个以供参考):
11 363 365
co_stkdate
1997-07-02 NaN -12.134525 NaN
1997-07-04 NaN -3.663248 -15.703843
1997-07-07 NaN -30.649876 3.400623
1997-07-08 NaN 17.924305 -6.188777
1997-07-10 NaN -25.828099 -0.615380
我想比较两个数据框以分别查找数据框每一列的公共日期,并为residual
数据框中具有匹配日期的每一列提取特定行及其相邻行events
。由于数据集非常大,我想遍历残差的每一列以根据列名(与数据框匹配events
)比较日期。因此,我尝试了以下代码:
carvalues = {}
for code in residual.columns:
for c in events['co_code']:
if (code == c):
for elem in events['co_stkdate']:
for dates in residual.index:
if (elem == dates):
if pd.notnull(residual.loc[dates, code]):
idx=residual.index.get_loc(dates, code. method=None)
carvalues = residual.iloc[idx - 10 : idx +10]
但我不断收到以下错误:
TypeError: get_loc() got multiple values for argument 'method'
预期输出:例如,residual
在日期 2009-03-17 的上方和下方提取 10 行(从数据框中),对应于 'co_code'=11(在数据框中给出events
)。并期望日期 2009-03-17 的输出,对应于 'co_code'=11 为:
co_stkdate 11
2009-02-25 4.467442
2009-02-26 4.921655
2009-02-27 -4.875917
2009-03-02 1.895546
2009-03-03 -3.162370
2009-03-06 85.396542
2009-03-09 43.233098
2009-03-12 11.389193
2009-03-13 -68.633160
2009-03-16 0.329175
2009-03-17 -0.049623
2009-03-18 3.584602
2009-03-19 -3.602577
2009-03-20 -1.532591
2009-03-23 2.766331
2009-03-24 0.487590
2009-03-25 -3.541044
2009-03-26 -5.055355
2009-03-27 0.887624
2009-03-30 2.530087
同样,接下来我想要 & 的输出co_stkdate=2010-02-03
,co_code=11
然后是co_stkdate=2011-02-14
&的输出co_code=363
,依此类推(如数据框中给出的events
)。我怎样才能消除错误?任何有关执行此操作的最佳方法的指导将不胜感激。
解决方案
将第二个数据框从宽格式重塑为长格式并加入两个数据框,您将获得所需的结果
推荐阅读
- python - 如何处理非常大的浮点数
- python - How to create a unstacked bar plot with dates in X axis?
- python - Python:强制执行抽象方法
- c# - Validating a three field date for an Xamarin application that targets an Android device
- jquery - On click of the button shift the sidebar to inside from screen
- ruby - 我可以将减号 (-) 或加号 (+) 作为参数传递给方法并在方法中使用它们吗?
- c# - Style @Html.DisplayFor text with color in Razor view
- java - Weblogic 10.3.6 and spring-web 4.0.3 issue
- c# - How can i update the datas in Content node in umbraco using C#?
- ios - ReactiveKit:观察一组信号,当它们都完成时做一些事情