【发布时间】:2018-03-01 20:01:55
【问题描述】:
我正在尝试根据该数据框中的两个预先存在的列附加一个熊猫数据框。我遇到的问题是熊猫数据框的索引是对象格式,而不是整数格式。为了让事情变得更复杂,我只想附加一定范围的数据框,将新列中的剩余单元格保留为“NaN”。为了仅附加数据帧的某个范围,我将不得不使用“for”循环。
这是我的问题:当我有对象索引时,如何循环数据帧的某个范围?
我最初的 pandas 数据框只是...
import pandas as pd
dates = ['2005Q4','2006Q1','2006Q2','2006Q3','2006Q4','2007Q1','2007Q2']
col1 = [ 5.9805, 6.2181, 6.3508, 6.7878, 6.6212, 6.4583, 6.4068 ]
col2 = [ 'NaN', -0.001054985938, -0.121731711952, 0.046275331889,
-0.017517211963, -0.023422842422, 0.009072170884 ]
data = pd.DataFrame(
{
'col1': col1,
'col2': col2
},
columns = [
'col1',
'col2'
],
index = dates
)
我想做的就是这样......
data['col3'] = 'NaN'
for i in range('2006Q1','2006Q4',1):
data['col3'][i] = data['col1'][i-1] +\
data['col2'][i]
天真地,我曾希望 python 能够将索引中的对象名称与与该特定索引关联的实际索引号相关联。例如,如果我将索引定义为给定,python 将能够知道 '2005Q4' 是 index = 0,'2006Q1' 是 index = 1,等等。这样,我可以在 range() 中使用对象字符串函数,它仍然会知道我所指的整数。然而,情况似乎并非如此。
我还需要避免将对象转换为日期格式。将索引保持为“YearQuarter”格式很重要,而且我还没有找到一种简单的使用 pd.to_datetime 的方法来做到这一点。
有没有人对如何在 python 中仅循环特定范围的基于对象的索引有任何建议?
【问题讨论】:
标签: pandas loops object indexing append