我正在尝试旋转这个 DataFrame 'a':
algoasdaa rc rmse
0 asa 20-50 0.585161
1 asa 20-100 0.462159
2 asa 40-100 2.664910
3 asa 60-200 3.957400
4 asa 60-300 3.799590
5 lorl 20-50 0.696916
6 lorl 20-100 0.456810
7 lorl 40-100 2.489900
8 lorl 60-200 4.004530
9 lorl 60-300 3.736500
通过调用数据透视法
a.pivot('rc', 'algoasdaa', 'rmse')
但是我总是报错
KeyError: 'no item named rmse'
即使这种情况看起来与 docs 中描述的完全一样
提前致谢!
最佳答案
那应该有用,而且对我有用:
>>> df.pivot("rc", "algoasdaa", "rmse")
algoasdaa asa lorl
rc
20-100 0.462159 0.456810
20-50 0.585161 0.696916
40-100 2.664910 2.489900
60-200 3.957400 4.004530
60-300 3.799590 3.736500
我怀疑您的 rmse
列名称中有一些您看不到的空格。例如,如果我添加一个空格,它看起来是一样的:
>>> df.columns = ["rc", "algoasdaa", " rmse"]
>>> df
rc algoasdaa rmse
0 asa 20-50 0.585161
1 asa 20-100 0.462159
2 asa 40-100 2.664910
3 asa 60-200 3.957400
4 asa 60-300 3.799590
5 lorl 20-50 0.696916
6 lorl 20-100 0.456810
7 lorl 40-100 2.489900
8 lorl 60-200 4.004530
9 lorl 60-300 3.736500
但是:
>>> df.pivot("rc", "algoasdaa", "rmse")
Traceback (most recent call last):
[...]
KeyError: u'no item named rmse'
尝试
>>> print df.columns
Index([u'rc', u'algoasdaa', u' rmse'], dtype=object)
确认这一点。然后你可以修复你的读取操作(最好)或者在事后用类似的东西修补它们
>>> df.columns = [col.strip() for col in df.columns]
或
>>> df.columns = pd.Series(df.columns).str.strip()
关于python - 如何用 Pandas 旋转数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19347770/