【问题标题】:Assigning different Dataframes to different variables将不同的数据框分配给不同的变量
【发布时间】:2019-04-01 11:52:12
【问题描述】:

我正在为算法创建测试和训练数据。我在不同的 csv 文件中有数据,我想从中创建训练和测试数据。

我已将所有 csv 文件导入到 pandas 数据框中,使用

dfs = [pd.read_csv(file) for file in datafiles]

dfs[1] 具有第一个数据帧 dfs[2] 第二个,依此类推

我想将它们分配给不同的数据框,格式为 Xtest1 为 dfs[1],Xtest2 为 dfs[2],依此类推,直到文件结束

任何人都可以使用循环或任何其他想法来帮助做到这一点

【问题讨论】:

标签: python python-3.x pandas


【解决方案1】:

您的意思是自动创建变量并为它们分配一些东西?

试试 globals(), locals()

for a in range(10):
    locals()["var1_"+str(a)+"] = 1

【讨论】:

    【解决方案2】:

    您需要使用字典来执行此操作。您可以尝试以下方法吗:

    dfs = {'Xtest'+ str(ind): pd.read_csv(file) for ind, file in enumerate(datafiles)}
    

    而每当您需要访问数据框时,您可以通过以下方式进行:

    dfs['Xtest1']
    

    如果你想迭代字典,你可以使用以下方法:

    for i in range(4):
        print(dfs['Xtest' + str(i)])
    

    【讨论】:

    • 嗨,杰瑞尔,非常感谢。实际上,我必须应用一个训练测试拆分功能,因为我需要单独的数据帧中的数据帧,如 X_test1、X_test2。有什么方法可以像 for 循环一样进行迭代,在其中我可以更改变量,例如 Xtest# 和 # 可以是像 1 2 3 这样的数字,具体取决于循环迭代次数。
    • dfs 是数据帧的字典,您可以在 forloop 中对其进行迭代。检查我修改后的解决方案。
    • 嗨杰瑞尔。谢谢。其实我必须做以下事情。我想循环进行 train1, test1 = train_test_split(training_set1, test_size=0.2, shuffle=False) train2, test2 = train_test_split(training_set2, test_size=0.4, shuffle=False) train3, test3 = train_test_split(training_set3, test_size= 0.2, shuffle=False) for i in range(10, len(train1)): X_train1.append(train1[i-10:i, 1:11]) y_train1.append(train1[i, 10]) X_train1, y_train1 = np.array(X_train1), np.array(y_train1) 同样适用于 train2 和 train 3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多