我试图在两台计算机上运行相同的脚本,并将我的dict结构,数据转换为Pandas DataFrame。
df = pd.DataFrame(data, columns=[column_label])
df.to_csv('./result.csv', mode='w', index=False)
它在Pandas版本低于0.21.0的计算机上完美运行。但是,当我执行相同的代码到我的服务器时,突然它会生成一个只有列标签的csv文件,而没有数据。
我试图打印出df的值,并且在服务器上它都是NAN。
当我删除这样的列部分时:
df = pd.DataFrame(data)
df.to_csv('./result.csv', mode='w', index=False)
突然数据又回来了,尽管列缺失且数据不合规。
如果我这样做
df = pd.DataFrame(data)
df.columns = column_label
df.to_csv('./result.csv', mode='w', index=False)
列标签已退回,但列标签乱序,且数据也不符合列标签的顺序。
如果我这样做
df = pd.DataFrame(columns=[column_label])
df = pd.DataFrame(data)
df.to_csv('./result.csv', mode='w', index=False)
数据与列标签的顺序相匹配,但列标签本身无序......
我已经在0.17.0到0.22.0之间的计算机上升级了我的pandas库,它也停止了工作。
因此,出于某种原因,将数据和列= [column_label]分配到一行中的DataFrame似乎会在Pandas版本0.21.0之后将dict转换为DataFrame转换。
如何使用较新版本的Pandas进行列分配?
答案 0 :(得分:1)
我假设column_label
是一个列表.Pandas的columns
参数只需要一个列名列表。通过将[column_label]
传递给columns
参数,您正在做的是传递列表列表。尝试不使用[]
。
df = pd.DataFrame(data, columns=column_label)