【问题标题】:iterate through csv columns to create multiple python dataframe遍历 csv 列以创建多个 python 数据框
【发布时间】:2016-12-20 01:49:55
【问题描述】:

我正在尝试使用 excel csv 文件的列创建多个数据框。这是我能够到达的地方

import pandas as pd
file = pd.read_csv('file.csv')
df = pd.DataFrame(file)
cols = df.columns
#column names are 'Date', 'Stock 1', 'Stock 2', etc - I have 1000 columns

for i in range(len(cols)):
    df[i] = df[['Date',b(i)]]

所以最终结果是我想要多个数据帧。第一个数据帧包含第 1 列和第 2 列(即日期和股票 1),第二个数据帧包含第 1 列和第 3 列(因此日期和股票 2),第三个数据帧包含第 1 列和第 3 列,一路创建新数据帧到第 1 列和第 1000 列。

我尝试了几种方法,要么获取不可调用的索引,要么尝试使用 usecols,但我得到 usecols 必须是字符串或整数。

谁能帮我解决这个问题。从概念上讲这很容易,但我无法正确编写代码。谢谢。

【问题讨论】:

    标签: python csv pandas dataframe


    【解决方案1】:

    这可以满足您的要求:

    all_dfs = []
    for col in df.columns:
        if col != 'Date':
            df_current = df[['Date', col]]
            all_dfs.append(df_current)
    

    或一行:

    all_dfs = [df[['Date', col]] for col in df.columns if col != 'Date']
    

    但您可能不想这样做。没有多大意义。你真正想做什么?

    【讨论】:

    • 您可能需要为 col != 'Date' 提供 if 语句
    • 我最终尝试使用 CSV 中的 Date 和 1 列创建多个数据数据框。 CSV 有 1000 列,所有列都有股票和股票价格列 标题 1 标题 2 标题 3 标题 4 ======== ======== ======== ==== ==== 日期 库存 1 库存 2 库存 3 1/2/2001 2.77 6.00 11.00 1/3/2001 2.89 6.08 11.10 1/4/2001 2.86 6.33 11.97 1/5/2001 2.80 6.58 12.40
    • 所以我最终想要生成 100 个数据帧,因此 DF1 将是 Date 和 Stock 1,DF2 将是 Date 和 Stock2,等等。
    • 您尝试过@bananafish 的解决方案吗? all_dfs 应该使用 DateStock 返回您需要的 dfs 列表。实际上,最好将其保留为一个列表对象,而不是 100 多个 dfs 泛滥全局环境(尤其是在相同结构的情况下)。只需按索引引用每个:all_dfs[1]
    • @JWestwood 对,但是您打算如何处理这些数据帧?很可能你可以做到这一点,而无需首先创建 100 个数据帧,而只需坚持从 csv 加载的数据帧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2021-07-16
    相关资源
    最近更新 更多