使用pandas.DataFrame中的复杂条件进行选择

使用pandas.DataFrame中的复杂条件进行选择

例如,我有简单的DF:

import pandas as pdfrom random import randint

df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
                   'B': [randint(1, 9)*10 for x in xrange(10)],
                   'C': [randint(1, 9)*100 for x in xrange(10)]})

我可以使用Pandas的方法和习语从“A”中选择“B”的相应值大于50,“C” - 不等于900的值吗?


慕斯王
浏览 1409回答 3
3回答

qq_笑_17

另一种解决方案是使用查询方法:import pandas as pdfrom random import randintdf = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],                   'B': [randint(1, 9) * 10 for x in xrange(10)],                   'C': [randint(1, 9) * 100 for x in xrange(10)]})print df   A   B    C0  7  20  3001  7  80  7002  4  90  1003  4  30  9004  7  80  2005  7  60  8006  3  80  9007  9  40  1008  6  40  1009  3  10  600print df.query('B > 50 and C != 900')   A   B    C1  7  80  7002  4  90  1004  7  80  2005  7  60  800现在,如果要更改A列中的返回值,可以保存其索引:my_query_index = df.query('B > 50 & C != 900').index....并用它.iloc来改变它们,即:df.iloc[my_query_index, 0] = 5000print df      A   B    C0     7  20  3001  5000  80  7002  5000  90  1003     4  30  9004  5000  80  2005  5000  60  8006     3  80  9007     9  40  1008     6  40  1009     3  10  600
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python