我正在尝试将JSON文件转换为数据框。我创建的数据框有两列:time
和sumOfFFT
。它们都是浮点数。 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,并相互绘制两个变量。
答案 0 :(得分:0)
您可以这样做:
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