【问题标题】:Converting Dataframe column with list objects to floating point numbers [duplicate]将带有列表对象的Dataframe列转换为浮点数[重复]
【发布时间】:2019-09-23 21:11:38
【问题描述】:

我正在尝试将 JSON 文件转换为数据框。我创建的数据框有两列:timesumOfFFT。它们都是浮点数。 sumOfFFT 是 float 类型,time 是 object 类型,列中的每一行都是带有数字的 list

我尝试使用 to_numeric 并且所有数字都转换为 NaN,因为它是 list 对象。我也尝试过Series,但效果相同。我正在尝试将每一行中的列表对象转换为字符串,然后浮动,但它会引发错误。

a = float(str(frame.iloc[1]['time']))
print(a)
ValueError                                Traceback (most recent call last)
<ipython-input-75-2f41310a23f7> in <module>()
----> 1 a = float(str(frame.iloc[1]['time']))
      2 print(a)

ValueError: could not convert string to float: '[0.0001041666667]'

数据格式:

{
    "fft": {
        "time": [
            [0],
            [0.0001041666667],
            [0.0002083333333],
            [0.0003125],
                        ],
        "sumOfFFT": [2.883648107,2.769599456,2.659837554,2.560352381]
                }
}

到目前为止的代码:

import json
import pandas as pd
with open('akhil_195682_170628-174745.json') as json_data:
   obj = json.load(json_data)
   frame = pd.DataFrame(obj['fft'], columns=['time', 'sumOfFFT'])

输出:

time    sumOfFFT
0   [0] 2.883648
1   [0.0001041666667]   2.769599
2   [0.0002083333333]   2.659838
3   [0.0003125] 2.560352

我希望将数据转换为 DataFrame,并将两个变量相互绘制。

【问题讨论】:

    标签: python python-3.x pandas dataframe type-conversion


    【解决方案1】:

    你可以这样做:

    frame["time"]=frame["time"].apply(lambda x:x[0])
    

    结果:

        sumOfFFT    time
    0   2.883648    0.000000
    1   2.769599    0.000104
    2   2.659838    0.000208
    3   2.560352    0.000313
    

    【讨论】:

      猜你喜欢
      • 2021-05-02
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2022-11-21
      • 2013-11-04
      • 2021-07-20
      • 1970-01-01
      • 2018-08-28
      相关资源
      最近更新 更多