使用Pandas,我有一些数据要添加到“results”数据框中。也就是说,我有
naics=一些数据
看起来像这样
indnaics ind1990
89 81393 873
但是,它可以有多行。我想将它们与名为year的变量一起添加到我的results
数据框中。如果有多行,则所有行的year
值都应相同。这就是我目前正在尝试的
for job in jobs:
df2 = iGetThisFromJob()
years = df2.year.unique()
naics = iGetThisFromJob()
if len(naics) == 0:
continue
for year in years:
wages = df2.incwage[df2.year == year]
# Add all the data to results, this is how I try it
rows = pd.DataFrame([dict(year=year, incwage=mean(wages), )])
# I also want to add the column indnaics from my naics
rows['naics'] = naics.indnaics
results = results.append(rows, ignore_index=True)
但是,尽管naics.indnaics已满,但我不能以这种方式将其添加到rows对象中。
naics.indnaics
Out[1052]:
89 81393
rows['naics'] = naics.indnaics rows
Out[1051]:
incwage year naics
0 45853.061224 2002 NaN
如果我的代码还有什么不好的地方,请告诉我。我才刚开始学熊猫。
谢谢!
/编辑 预期产量:
incwage year naics
0 45853.061224 2002 81393
0 45853.061224 2002 12312
/编辑 建议的解决方案:
index = arange(0, len(naics))
columns = ['year', 'incwage', 'naics']
rows = pd.DataFrame(index=index, columns=columns)
rows.year = year
rows.incwage = mean(wages)
rows.naics = naics.indnaics.values
获取NaN值的原因是索引不匹配(在
rows['naics'] = naics.indnaics
rows
中索引为0,而naics.indnaics
中索引为89),分配该值将尝试对齐索引。例如,您可以通过只获取值(例如
naics.indnaics.values
)来解决这个问题。以玩具为例:如果要添加可能包含更多值的序列,有两个选项。我想到:
例如,首先将数据帧重新索引为序列的长度:
或者反过来,将dataframe添加到序列(您首先将其转换为dataframe):
相关问题 更多 >
编程相关推荐