python - Python 中 DataFrames 的 DataFrame (Pandas)

标签 python pandas input

这里的想法是,每年,我都能够创建三个数据框(df1、df2、df3),每个数据框都包含不同的公司和股票价格('firm' 和 'price' 是 df1~df3 中的两列)。我想每年使用另一个数据框(下面命名为“商店”)来存储三个数据框。

这是我的代码:

store = pd.DataFrame(list(range(1967,2014)), columns=['year'])
for year in range(1967,2014):
    ....some codes that allow me to generate df1, df2 and df3 correctly...
    store.loc[store['year']==year, 'df1']=df1
    store.loc[store['year']==year, 'df2']=df2
    store.loc[store['year']==year, 'df3']=df3

在此代码之后,我没有收到错误警告或任何内容。
但是在“存储”数据框中,列 'df1'、'df2' 和 'df3' 都是 'NAN' 值。

最佳答案

我认为 Pandas 为您的建议提供了更好的替代方案(理由如下)。

其中之一是 pandas.Panel 数据结构,这适用于您在这里所做的事情。

然而,正如 Wes McKinney(Pandas 的作者)在他的书 Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython 中指出的那样。 ,多维索引在很大程度上提供了更好的选择。

考虑以下替代代码:

dfs = []
for year in range(1967,2014):
    ....some codes that allow me to generate df1, df2 and df3 
    df1['year'] = year
    df1['origin'] = 'df1'
    df2['year'] = year
    df2['origin'] = 'df2'
    df3['year'] = year
    df3['origin'] = 'df3'
    dfs.extend([df1, df2, df3])
df = pd.concat(dfs)

这为您提供了一个包含 4 列的 DataFrame:'firm' , 'price' , 'year' , 和 'origin' .

这使您可以灵活地:
  • 例如,通过 'year' 分层组织和 'origin' :df.set_index(['year', 'origin']) ,比如说,'origin''price' :df.set_index(['origin', 'price'])
  • groupby s按不同级别
  • 通常,按照许多不同的方式对数据进行切片和切块。

  • 您在问题中提出的建议使一个维度(起源)任意不同,并且很难想到这样做的优势。如果由于性能等原因需要沿某个维度进行拆分,则可以将 DataFrame 与标准 Python 数据结构更好地结合起来:
  • 将每年映射到具有其他三个维度的 Dataframe 的字典。
  • 三个 DataFrame,每个原点一个,每个都有三个维度。
  • 关于python - Python 中 DataFrames 的 DataFrame (Pandas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35932060/

    相关文章:

    javascript - HTML 表单的日期/时间输入

    r - 从终端安全地向 R 应用程序提供密码的方法?

    python - 如何在 Beautiful Soup 4.7.1 中使用 "select"?

    python - 如何在 Python 中创建命名空间包?

    python - pandas 系列 groupby 一组

    python - 获取数据帧的所有单元格作为(索引,列)的元组以传递给 df.apply()

    python - 使用 Seaborn FacetGrid 绘制相关热图

    c++ - 为什么输入字母时这个循环不止一次?

    python - Matplotlib 中的垂直偏移刻度标签

    Python - 建模概率