gpt4 book ai didi

python - 如何在 python 中加入 Pandas 数据帧

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:31 25 4
gpt4 key购买 nike

我在 python 中加入数据帧时遇到了一些问题。该代码应该为每个美国州创建一个数据框并将其放入主数据框中。

我认为问题出在列标题上。当我打印它们时,我得到了这个:

Index([u'0AL', u'0', u'0AZ', u'0', u'0CO', u'0', u'0DE', u'0', u'0GA', u'0',
u'0IA', u'0', u'0IL', u'0', u'0KS', u'0', u'0LA', u'0', u'0MD', u'0',
u'0MI', u'0', u'0MO', u'0', u'0MT', u'0', u'0ND', u'0', u'0NH', u'0',
u'0NM', u'0', u'0NY', u'0', u'0OK', u'0', u'0PA', u'0', u'0SC', u'0',
u'0TN', u'0', u'0UT', u'0', u'0VT', u'0', u'0WI', u'0', u'0WY', u'0'],
dtype='object')

当我打印数据框时,我得到了这个:

            0AL    0  0AZ  0  0CO    0  0DE    0  0GA    0 ...   0TN    0  \
2017-01-01 6.5 6.4 3.8 5 5.2 2.9 4.5 4.4 5 5.5 ... 2.9 5.4

0UT 0 0VT 0 0WI 0 0WY 0
2017-01-01 4.8 3.1 4 3.1 5.1 3.9 5.6 4.8

[1 rows x 50 columns]

它似乎在所有地方都添加了“0”并替换了一些列标题(状态)。最初,我是从维基百科上抓取各州的缩写,但后来我想我会尝试手动输入它们,但这没有帮助。提前致谢。

这样做的目的是能够根据特定标准对不同的州进行排名。

代码如下:

from fredapi import Fred
fred = Fred(api_key="XXXXXXXXXXXXXXXXX")
import matplotlib.pyplot as plt
from IPython.core.pylabtools import figsize
import datetime
import pandas as pd
import time
import html5lib
import numpy as np

#html= pd.read_html('https://en.wikipedia.org/wiki/List_of_states_and_territories_of_the_United_States')
#us_states= html[0][1][2:]

states =['AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH', 'NJ','NM', 'NV','NY','OH','OK','OR','PA','RI','SC', 'SD','TN','TX','UT','VA','VT','WA','WI','WV',"WY"]

start = datetime.datetime(2017,1,1)
end = datetime.datetime(2017,1,1)

figsize(40, 5)

main_df = pd.DataFrame()

for abbv in states:

df= pd.DataFrame(fred.get_series(series_id=str(abbv)+"UR",observation_start=start, observation_end=end))

if main_df.empty:
main_df = df

else:
main_df = main_df.join(df, lsuffix=abbv)


print main_df

第一个数据框如下所示:

             0
2017-01-01 6.5

最佳答案

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html

文档说您在重叠的列标题后使用后缀(即单词后面的内容)。这并不意味着列标题设置为 abbv - 例如,您会在获得 0NY 的地方获得此行为。

如果您想将列标题设置为您的状态,请按如下所示使用 df.rename 进行设置:

df = df.rename(columns={'0': abbv})

然后进行连接。

编辑:或者设置标题以这样保存重命名:

df= pd.DataFrame(fred.get_series(series_id=str(abbv)+"UR",observation_start=start, observation_end=end), columns=[abbv])

关于python - 如何在 python 中加入 Pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45000609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com