python - Pandas 将列表转换为 float

标签 python pandas

如何将 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/

相关文章:

python - BigQuery 代码由于使用 pandas python 客户端库的 MemoryError 而失败

python - 我的 Pygame 图像未加载

python - 如何更改圆括号和方括号的颜色?

python - 如何检查 Item() 中的值是否为空?

python - 将 pandas 多重索引转换为日期时间格式

python - 在运行时更改数据框的列名称

python - 元类冲突、多重继承、实例为父类

python - 如何将数据帧转换为时间序列

python - 计算年份子集中的类别并除以子集中的总数

pandas - 如何根据月份拆分数据?