pandas0.10.1至0.11.0 .ix方法

我有一个巨大的具有唯一索引的数据框。这在pandas 0.10.1中是有效的代码,但在pandas 0.11.0中似乎已中断。


简而言之,我有一个包含两列的DataFrame(df):“分类”和“ A”,均填充有数据。该df具有唯一索引。如果“分类”不在某个列表中,我想覆盖A中的值。


# df contains the original data

accurate_list = ['corr1', 'corr2', 'corr3']

# x is filtered dataframe with only inaccurate entries

x = df[~df.Classification.isin(accurate_list)]

df.ix[x.index,'A'] = df['Classification']

对不起,无法弄清楚如何在此处获取一些示例数据。问题似乎出在.ix方法的最后一行。从熊猫0.11.0引用什么是新文档http://pandas.pydata.org/pandas-docs/dev/whatsnew.html#v0-11-0-april-22-2013:


“ .ix支持基于整数和标签的混合访问。它主要基于标签,但将回退到整数位置访问。.ix是最通用的,将支持.loc和.iloc的任何输入,并支持浮点标签方案。.ix在处理混合的位置和基于标签的层次结构索引时特别有用。”


没有异常消息...虽然数据似乎失去对齐。


有任何想法,如果这是一个熊猫错误或我在熊猫0.10.1中编写了错误的代码?


这是一些示例代码。那说明了问题:


accurate_ICB = ['SA EQUITY CFD', 'SA EQUITY', 'SA SSF']

print pd.__version__

data = {'Classification': ['SA EQUITY CFD', 'bbb', 'SA EQUITY', 'SA SSF', 'aaa'],

    'Random': [1,2,3,4,5],

    'X': ['correct', 'wrong','correct', 'correct','wrong']}

df =pd.DataFrame(data)

print "Original DataFrame:"

print df

print "="*35

x = df[~df.Classification.isin(accurate_ICB)]

print x

print "="*35

df.ix[x.index,'X'] = df['Classification']

print df

在熊猫0.10.1中,它产生:


  Classification  Random        X

0  SA EQUITY CFD       1  correct

1            bbb       2      bbb

2      SA EQUITY       3  correct

3         SA SSF       4  correct

4            aaa       5      aaa

在熊猫0.11.0中,右下角aaa变为bbb。被检查的列与被更改的列之间的所有列似乎触发更改的行为


慕侠2389804
浏览 146回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python