楔子
有时候DataFrame,我们不一定要保存成文件、或者入数据库,而是希望保存成其它的格式,比如字典、列表、json等等。当然,读取DataFrame也不一定非要从文件、或者数据库,根据现有的数据生成DataFrame也是可以的,那么该怎么做呢?我们来看一下
DataFrame转成python中的数据格式
转成json
DataFrame转成json,可以使用df.to_json()方法
import pandas as pd
df = pd.DataFrame({"name": ["mashiro", "satori", "koishi", "nagisa"],
"age": [17, 17, 16, 21]})
print(df.to_json())
# {"name":{"0":"mashiro","1":"satori","2":"koishi","3":"nagisa"},"age":{"0":17,"1":17,"2":16,"3":21}}
我们看到虽然转化成了json,但是有些不完美,那就是它把索引也算进去了
import pandas as pd
df = pd.DataFrame({"name": ["mashiro", "satori", "koishi", "nagisa"],
"age": [17, 17, 16, 21]})
# 如果不想加索引的话,那么指定index=False即可
try:
print(df.to_json(index=False))
except Exception as e:
print(e) # 'index=False' is only valid when 'orient' is 'split' or 'table'
# 但是它报错了,说如果index=False,那么orient必须指定我split或者table
我们看一下这个orient是什么
首先orient可以有如下取值:split、records、index、columns、values、table
我们分别演示一下,看看orient取不同的值,结果会有什么变化
orient='split'
import pandas as pd
df = pd.DataFrame({"name": ["mashiro", "satori", "koishi", "nagisa"],
"age": [17, 17, 16, 21]})
print(df.to_json(orient="split"))
"""
{
"columns":["name","age"],
"index":[0,1,2,3],
"data":[["mashiro",17],["satori",17],["koishi",16],["nagisa",21]]
}
"""
print(df.to_json(orient="split", index=False))
"""
{
"columns":["name","age"],
"data":[["mashiro",17],["satori",17],["koishi",16],["nagisa",21]]
}
"""
我们看到会变成三个键值对,分别是列名、索引、数据
orient='records'
impo