如何将 b 列和 c 列转换为 float 并将 b 列扩展为两列。
示例数据框:
a b c
0 36 [-212828.804308, 100000067.554] [-3079773936.0]
1 39 [-136.358761948, -50000.0160325] [1518911.64408]
2 40 [-136.358761948, -50000.0160325] [1518911.64408]
预期:
a b1 b2 c
0 36 -212828.804308 100000067.554 -3079773936.0
1 39 -136.358761948, -50000.0160325 1518911.64408
2 40 -136.358761948, -50000.0160325 1518911.64408
最佳答案
这里有两种选择:
1) 将列转换为列表,然后从头开始构建 DataFrame:
pd.concat((df['a'], pd.DataFrame(df['b'].tolist()), pd.DataFrame(df['c'].tolist())), axis=1)
Out:
a 0 1 0
0 36 -212828.804308 1.000001e+08 -3.079774e+09
1 39 -136.358762 -5.000002e+04 1.518912e+06
2 40 -136.358762 -5.000002e+04 1.518912e+06
或者在一个循环中:
pd.concat((pd.DataFrame(df[col].tolist()) for col in df), axis=1)
Out:
0 0 1 0
0 36 -212828.804308 1.000001e+08 -3.079774e+09
1 39 -136.358762 -5.000002e+04 1.518912e+06
2 40 -136.358762 -5.000002e+04 1.518912e+06
2) 将 pd.Series
应用于每一列(可能较慢):
pd.concat((df[col].apply(pd.Series) for col in df), axis=1)
Out:
0 0 1 0
0 36 -212828.804308 1.000001e+08 -3.079774e+09
1 39 -136.358762 -5.000002e+04 1.518912e+06
2 40 -136.358762 -5.000002e+04 1.518912e+06
关于python - Pandas 将列表转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43622731/