pandas DataFrame 常用技巧 – dataframe String互相转换
import pandas as pd
from io import StringIO
data = {
1:{'a':1, 'b':2, 'c':3}
2:{'a':2, 'b'3, 'c':4}
}
df = pd.DataFrame(data = data) # 初始化一个dataframe
df_string = StringIO(df.to_csv()) # 这里不能先建立好StringIO对象,再向里面写string, 否则会报错
del df
print(df)
df = pd.read_csv(df_string)
以上代码是将dataframe对象暂存到一个内存文件中, 当我们需要的时候,再从内存文件中还原出原始的dataframe。
这样做有什么好处那?比如,在使用redis作为暂存的时候,我们无法将dataframe直接存储到redis,需要先转换成
string类型。但是,pandas并没有提供直接从string转换回dataframe的工具,这时候,我们就可以使用内存文件,然后
利用pandas的read_csv方法来帮我们实现这个任务了。
这个时候,一定已经有人想到了,是不是使用pickle来做这件事请更好那?ok,给大家看看代码:
import pickle
df_bytes = pickle.dumps(df)
del df
df = pickle.loads(df_bytes)
简单,完美,ok