python – Pandas分层列和csv函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Pandas分层列和csv函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1943字,纯文字阅读大概需要3分钟。
内容图文
![python – Pandas分层列和csv函数](/upload/InfoBanner/zyjiaocheng/770/92dfa4f15e6343ddba3bc9bd3bc24ff4.jpg)
是否有可能以尊重分层列结构的方式通过csv往返数据帧?换句话说,如果我有以下DataFrame:
>>> cols = pd.MultiIndex.from_arrays([["foo", "foo", "bar", "bar"],
["a", "b", "c", "d"]])
>>> df = pd.DataFrame(np.random.randn(5, 4), index=range(5), columns=cols)
执行以下操作失败:
>>> df.to_csv("df.csv", index_label="index")
>>> df_new = pd.read_csv("df.csv", index_col="index")
>>> assert df.columns == df_new.columns
我在csv保存/读取步骤中缺少一些选项吗?
解决方法:
在您具有柱状MultiIndex但是简单索引的特殊情况下,您可以转置DataFrame并使用index_label和index_col,如下所示:
import numpy as np
import pandas as pd
cols = pd.MultiIndex.from_arrays([["foo", "foo", "bar", "bar"],
["a", "b", "c", "d"]])
df = pd.DataFrame(np.random.randn(5, 4), index=range(5), columns=cols)
(df.T).to_csv('/tmp/df.csv', index_label=['first','second'])
df_new = pd.read_csv('/tmp/df.csv', index_col=['first','second']).T
assert np.all(df.columns.values == df_new.columns.values)
但不幸的是,如果索引和列都是MultiIndexes,这就引出了一个问题:
这是一个hacky解决方法:
import numpy as np
import pandas as pd
import ast
cols = pd.MultiIndex.from_arrays([["foo", "foo", "bar", "bar"],
["a", "b", "c", "d"]])
df = pd.DataFrame(np.random.randn(5, 4), index=range(5), columns=cols)
print(df)
df.to_csv('/tmp/df.csv', index_label='index')
df_new = pd.read_csv('/tmp/df.csv', index_col='index')
columns = pd.MultiIndex.from_tuples([ast.literal_eval(item) for item in df_new.columns])
df_new.columns = columns
df_new.index.name = None
print(df_new)
assert np.all(df.columns.values == df_new.columns.values)
当然,如果您只想将DataFrame存储在任何格式的文件中,那么df.save和pd.load提供了一个更愉快的解决方案:
import numpy as np
import pandas as pd
cols = pd.MultiIndex.from_arrays([["foo", "foo", "bar", "bar"],
["a", "b", "c", "d"]])
df = pd.DataFrame(np.random.randn(5, 4), index=range(5), columns=cols)
df.save('/tmp/df.df')
df_new = pd.load('/tmp/df.df')
assert np.all(df.columns.values == df_new.columns.values)
内容总结
以上是互联网集市为您收集整理的python – Pandas分层列和csv函数全部内容,希望文章能够帮你解决python – Pandas分层列和csv函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。