如何将列表(x)转换为10x3的数据框?我想使用列表中的前三个条目作为列名。接下来的三个条目放在第1行,再接下来的三个条目放在第2行,以此类推。换句话说,我的数据框将有这三个名称“Phase”,“Formula”和“Sat Indx”的3列。然后,第1行条目将是Calcite,CaCO3,.8409。
我尝试了以下方法,但出现了错误:
我尝试了以下方法,但出现了错误:
z=DataFrame(x, columns=['Phase','Formula','Sat Indx'])
print(x)
[u'Phase ',
u'Formula ',
u'Sat Indx',
u'Calcite ',
u'CaCO3 ',
0.8409314786906652,
u'Aragonite ',
u'CaCO3 ',
0.6971616312984299,
u'H2O(g) ',
u'H2O ',
-1.5101143330253721,
u'CO2(g) ',
u'CO2 ',
-1.5522870578743806,
u'Gypsum ',
u'CaSO4:2H2O ',
-2.993649142404755,
u'Anhydrite ',
u'CaSO4 ',
-3.2135284668446644,
u'Portlandite ',
u'Ca(OH)2 ',
-10.738067251525967,
u'H2(g) ',
u'H2 ',
-22.6,
u'O2(g) ',
u'O2 ',
-37.98786977495807,
u'CH4(g) ',
u'CH4 ',
-66.16971681191183]
Sat Indx
的元素成为字符串。我考虑使用dtype=object
来避免这种情况,例如df2 = pd.DataFrame(np.array(x[3:], dtype=object).reshape(-1,3), columns=x[:3])
或类似的方法,但即使数字现在是浮点数,仍然有一个对象dtype列,而浮点数dtype会更好。 - DSMdtype=object
转换为float
很容易:z['Sat Indx'] = z['Sat Indx'].astype(float)
- Happy001