0
색인 및 행에 NaN
값을 포함하는 다중 색인 데이터 프레임이 있습니다.조건에 따라 pandas multiindex 데이터 프레임의 행과 하위를 선택하십시오.
In:
import pandas as pd
import numpy as np
row1 = {'index1' : 'abc', 'col1' : 'some_value', 'col3' : True}
row2 = {'index2' : 'xyz', 'col2' : 'other_value', 'col3' : np.nan}
row3 = {'index1' : 'def', 'col1' : 'different_value', 'col3' : False}
row4 = {'index2' : 'uvw', 'col2' : 'same_value', 'col3' : np.nan}
df = pd.DataFrame([row1, row2, row3, row4])
df.set_index(['index1', 'index2'], inplace=True)
print(df)
Out:
col1 col2 col3
index1 index2
abc NaN some_value NaN True
NaN xyz NaN other_value NaN
def NaN different_value NaN False
NaN uvw NaN same_value NaN
또한 조건이 보유하고있는 행의 모든 "subrows"를 포함하는 조건 col3 == True
하여 해당 dataframe의 하위 집합을 얻을 수있는 가능성이 있습니까? 내가
print(df[df.col3 == True])
갈 때
나는 조건이 보유하고있는 행이
col1 col2 col3
index1 index2
abc NaN some_value NaN True
를 얻을. 그러나, 내가 무엇을 찾고 있어요 것은 True
값 자체를 가지고 있지만 index1 == abc
있는 행의 "subrow"입니다하지 않는 행을 포함하여,
col1 col2 col3
index1 index2
abc NaN some_value NaN True
NaN xyz NaN other value NaN
입니다.
그럴 수 있습니까? 아니면 데이터 프레임이 엉망이고 다른 방식으로 구조화되어야합니까?
그래! 나는 여전히 할 의도가없는 것을하고 싶다. 그러나 이것은 내 목적을 위해 일한다. – Dirk
네가 데이터를 구조화하는 방식이 이상하게 보입니다. 모든 하위 행에 대해 동일한 index1을 사용해야한다고 생각합니다. 그러면 모든 명시 적으로 보이게 될 것입니다. 그런 다음 groupby/index1로 필터링 할 수 있습니다. 이것이 내가하는 방법이다. 그것은 현재의 방법보다 훨씬 더 효율적이지는 않지만 더 좋아 보일 것입니다. – elyase