Max*_*axS 3 python python-2.7 pandas seaborn
我想将pandas DataFrame的索引用作seaborn的x值,并引发值错误。一个小测试示例:
import pandas as pd
import seaborn as sns
sns.lineplot(x='index',y='test',hue='test2',data=pd.DataFrame({'test':range(9),'test2':range(9)}))
Run Code Online (Sandbox Code Playgroud)
它提出:
ValueError: Could not interpret input 'index'
Run Code Online (Sandbox Code Playgroud)
不能将索引用作x值?我究竟做错了什么?Python 2.7,Seaborn 0.9
您需要确保提供给x
参数的字符串实际上是数据框中的一列。实现这一目标的最简单的解决方案是重置数据帧的索引以将索引转换为列。
# reset the index, which results in a column named index
df = pd.DataFrame({'test':range(9),'test2':range(9)}).reset_index()
ax = sns.lineplot(x='index', y='test', data=df)
Run Code Online (Sandbox Code Playgroud)
df
# reset the index, which results in a column named index
df = pd.DataFrame({'test':range(9),'test2':range(9)}).reset_index()
ax = sns.lineplot(x='index', y='test', data=df)
Run Code Online (Sandbox Code Playgroud)
df
后reset_index
test test2
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
Run Code Online (Sandbox Code Playgroud)
我宁愿以这种方式使用它。您需要删除,hue
因为我认为它具有不同的用途,该用途不适用于当前的DataFrame,因为您只有一行。在此处访问官方文档以获取更多信息。
df=pd.DataFrame({'test':range(9),'test2':range(9)})
sns.lineplot(x=df.index, y='test', data=df)
Run Code Online (Sandbox Code Playgroud)
输出量