使用存储在列表中的列名将数据追加到DF

时间:2019-09-30 20:41:14

标签: python-3.x pandas

长时间的收听者,首次呼叫者...

我是python的新手,他很努力地了解如何处理不同用途的列表。在这种情况下,我最终将得到一长串的浮点对象,希望将它们排列到一个数据框中,并在每个循环后添加新行。

cols = ['col1','col2'....etc...]
df= pd.DataFrame(columns=cols)  

    for symbol in symbolList:

        col1 = some floating point calc
        col2 = another
        ...etc...

        df = df.append(pd.DataFrame(columns=cols, data=[[','.join(cols)]]))

即使我尝试使用不同的方法来处理结果字符串,以说服python将其视为对象列表而不是字符串。

我敢肯定,不仅有一种相对简单的修改data =参数的方法可以运行,而且还有一种更Python化的方式来实现我的最终结果。很高兴听到有关后者的信息,但对于我的教育,如果我的特定问题有解决方案,我将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用loc

symbolList = [*'ABCDEFG']
for symbol in symbolList:
    col1 = np.random.randn()
    col2 = np.random.randn()

    df.loc[symbol] = [col1, col2]

但是。如果将数据框定义为float,则可以使用at

cols = ['col1','col2']
df= pd.DataFrame(columns=cols, dtype=float)  

symbolList = [*'ABCDEFG']
for symbol in symbolList:
    col1 = np.random.randn()
    col2 = np.random.randn()

    df.at[symbol] = [col1, col2]

df

       col1      col2
A -0.099437 -0.264494
B  0.460220 -0.250704
C -0.127054 -0.372424
D -0.909770  0.835610
E -0.442418  0.298014
F -0.468022  0.111015
G  0.080260  1.768664

事实是,您本来可以使用at开始的,但是当您定义数据框时,列的dtypes默认为object,而当您使用at时,它什么也没有改变当您创建float的新行时。