使用Pandas将DataFrame首列转换为Series时出现AttributeError错误的解决方法与原因解析
解决DataFrame转Series时的
ix属性错误 嘿,这个问题很常见!你碰到的AttributeError是因为ix这个索引器早就被pandas弃用啦,具体原因和解决办法如下:
错误原因
ix是pandas早期版本里的混合索引工具,支持同时按位置和标签索引数据,但在pandas 1.0.0及之后的正式版本中,它已经被完全移除了。现在你用新版本的pandas运行这段代码,自然会找不到这个属性,抛出错误。
两种靠谱的解决办法
方法1:用iloc按位置索引
iloc是pandas专门用来按位置取数据的索引器,用法和你原来的ix几乎一样,直接替换就行:
import pandas as pd dict1 = {'col1': [1, 2, 3, 4, 7, 11], 'col2': [4, 5, 6, 9, 5, 0], 'col3': [7, 5, 8, 12, 1,11] } df1 = pd.DataFrame(data=dict1) series5 = df1.iloc[:, 0] # :表示取所有行,0表示取第1列(位置从0开始)
方法2:直接通过列名获取(更推荐)
如果你明确知道第一列的列名(这里是col1),直接用列名索引会更直观,而且就算之后DataFrame的列顺序变了,也不会取错数据:
import pandas as pd dict1 = {'col1': [1, 2, 3, 4, 7, 11], 'col2': [4, 5, 6, 9, 5, 0], 'col3': [7, 5, 8, 12, 1,11] } df1 = pd.DataFrame(data=dict1) series5 = df1['col1'] # 直接取col1列,自动转为Series类型
如果不确定列名,也可以通过df1.columns[0]获取第一列的列名,再索引:series5 = df1[df1.columns[0]],效果和iloc[:,0]一致,但可读性稍弱。
内容的提问来源于stack exchange,提问作者alperyildirim
相关产品推荐
相关产品推荐

