假设我有一个带有两列A和B的pandas DataFrame.我想修改这个DataFrame(或者创建一个副本),这样只要A为0,B总是NaN.我将如何实现?
我尝试了以下内容
df['A'==0]['B'] = np.nan
Run Code Online (Sandbox Code Playgroud)
和
df['A'==0]['B'].values.fill(np.nan)
Run Code Online (Sandbox Code Playgroud)
没有成功.
该(x, y)API已经日益普及,多年来,然而,没有关于它的一切是完全理解在结构方面,工作和相关的操作.
一个重要的操作是过滤.过滤是一种常见的要求,但用例是多种多样的.因此,某些方法和功能将比其他用例更适用于某些用例.
总之,本文的目的是触及一些常见的过滤问题和用例,演示解决这些问题的各种不同方法,并讨论它们的适用性.本文试图解决的一些高级问题是
这些问题已分解为6个具体问题,如下所列.为简单起见,以下设置中的示例DataFrame仅具有两个级别,并且没有重复的索引键.提出问题的大多数解决方案可以推广到N级.
本文不会介绍如何创建MultiIndexes,如何对它们执行赋值操作,或任何与性能相关的讨论(这些是另一个时间的单独主题).
问题1-6将在上下文中询问下面的设置.
Run Code Online (Sandbox Code Playgroud)mux = pd.MultiIndex.from_arrays([ list('aaaabbbbbccddddd'), list('tuvwtuvwtuvwtuvw') ], names=['one', 'two']) df = pd.DataFrame({'col': np.arange(len(mux))}, mux) col one two a t 0 u 1 v 2 w 3 b t 4 u 5 v 6 w 7 t 8 c u 9 v 10 d w 11 t 12 u 13 v 14 w 15
问题1:选择单个项目
如何在"1"级中选择"a"的行?
col
one two
a t 0 …Run Code Online (Sandbox Code Playgroud) 我有一个带有"A"和"B"列的多索引数据框.
是否有一种方法可以通过过滤多索引的一列来选择行,而无需将索引重置为单列索引.
例如.
# has multi-index (A,B)
df
#can I do this? I know this doesn't work because the index is multi-index so I need to specify a tuple
df.ix[df.A ==1]
Run Code Online (Sandbox Code Playgroud)