我有一个来自API的dataframe,字符串版本看起来像这样:
0
2023-04-17 4.82
2023-04-18 4.82
2023-04-19 4.82
2023-04-20 4.82
2023-04-21 4.81
当我调用df.to_json(orient = 'records')时,它看起来像这样(一点也不好):
[{"0":4.82},{"0":4.82},{"0":4.82},{"0":4.82},{"0":4.81}]
我真正想要的是它看起来像这样:
[{Date:"2023-04-17", "Rate":4.82},{Date:"2023-04-18", "Rate":4.82},{Date:"2023-04-19", "Rate":4.82},{Date:"2023-04-20", "Rate":4.82},{Date:"2023-04-21", "Rate":4.81}]
可能有许多行的数据,所以我需要转换执行良好
2条答案
按热度按时间6kkfgxo01#
您可以通过首先将dataframe转换为字典列表,然后使用json模块将其转换为具有所需结构的JSON格式来实现所需的输出。
下面是一个应该工作的示例代码片段:
这段代码首先使用to_dict方法将dataframe转换为字典列表,其中orient参数设置为'records'。然后它迭代列表中的每个记录,并通过创建一个带有“Date”和“Rate”键的新字典来格式化日期和速率值。最后,它使用json.dumps方法将格式化的数据转换为JSON字符串。
这种方法即使在处理大型 Dataframe 时也会表现良好,因为它避免了使用缓慢的循环,并利用内置的json模块实现高效的序列化。
ijxebb2r2#
在解析API响应时进行转换。这允许您利用
pandas
提供的任何矢量化。pd.read_csv()
的参数解释:io.StringIO(data)
:来自API响应的数据,应该很明显sep=' '
:电池之间的分隔线,应明显names=['Date', 'Rate']
:列标题dtype={'Date': str, 'Rate': float}
:将每列的值转换为的类型skiprows=[0]
:省略哪些行,这将省略第一行,因为它只是一个0
,我们不希望它出现在结果中默认情况下跳过空行。