Python 在for循环中创建数据帧列

Python 在for循环中创建数据帧列,python,pandas,Python,Pandas,我很难弄清楚如何在for循环中创建数据帧 df = pd.DataFrame() for sym in sorted(snapshot): for lp in sorted(snapshot[sym]): df['trader'] = lp df['bid'] = snapshot[sym][lp][":b"]["LUC"]["price"] if ":b" in snapshot[sym][lp] else "0" df['ask'] =

我很难弄清楚如何在for循环中创建数据帧

df = pd.DataFrame()
for sym in sorted(snapshot):
    for lp in sorted(snapshot[sym]):
        df['trader'] = lp
        df['bid'] = snapshot[sym][lp][":b"]["LUC"]["price"] if ":b" in snapshot[sym][lp] else "0"
        df['ask'] = snapshot[sym][lp][":a"]["LUC"]["price"] if ":a" in snapshot[sym][lp] else "0"

    print df
    print df['trader']
列中打印'df'结果:[交易员、出价、询问]索引:[]

打印“df['trader']会产生
系列([],名称:bid,数据类型:object)

如果我将df[列标题]更改为assignments,则所有内容都可以正常打印

我正在尝试创建一个如下所示的df:

      trader     bid     ask
0     MM2        1.25    1.26
1     MM5        1.23    1.27
2     MM3        1.25    1.28
....

感谢所有的帮助

从你的问题中很难理解发生了什么以及你有什么数据。在for循环的每个步骤中,您都可以从代码中重写列。您可以添加带有索引的
loc
,以避免:

df = pd.DataFrame()
sym_len = len(snapshot[sym])
for i, sym in enumerate(sorted(snapshot)):
    for j, lp in enumerate(sorted(snapshot[sym])):
        idx = i*sym_len + j
        df.loc[idx, 'trader'] = lp
        df.loc[idx, 'bid'] = snapshot[sym][lp][":b"]["LUC"]["price"] if ":b" in snapshot[sym][lp] else "0"
        df.loc[idx, 'ask'] = snapshot[sym][lp][":a"]["LUC"]["price"] if ":a" in snapshot[sym][lp] else "0"

什么是快照<代码>词典<代码>Json?你能在问题中添加示例吗?你在每一步中都会覆盖你的列。我如何才能将出价和要求更改为浮动?@Tom你可以使用方法
astype(float)