5
Giả sử tôi có một khung dữ liệu gấu trúc được lập chỉ mục nhiều giống như sau, được lấy từ documentation.Pandas dataframe với MultiIndex: kiểm tra xem chuỗi có nằm trong chỉ mục mức
import numpy as np
import pandas as pd
arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays)
nào trông như thế này:
0 1 2 3
bar one -0.096648 -0.080298 0.859359 -0.030288
two 0.043107 -0.431791 1.923893 -1.544845
baz one 0.639951 -0.008833 -0.227000 0.042315
two 0.705281 0.446257 -1.108522 0.471676
foo one -0.579483 -2.261138 -0.826789 1.543524
two -0.358526 1.416211 1.589617 0.284130
qux one 0.498149 -0.296404 0.127512 -0.224526
two -0.286687 -0.040473 1.443701 1.025008
Bây giờ tôi chỉ muốn các hàng nơi "ne" được chứa trong mức độ thứ hai của MultiIndex.
Có cách nào để cắt đa phần cho chuỗi (một phần) chứa không?
Có thể áp dụng mặt nạ cho hai cấp không? Tôi đã thử df = df.iloc [df.index.get_level_values (0) .str.contains ('ba'), df.index.get_level_values (1) .str.contains ('ne')] nhưng điều này không hoạt động. –
Tôi nghĩ bạn có thể làm một mặt nạ boolean như 'df = df.iloc [(df.index.get_level_values (0) .str.contains ('ba')) | (df.index.get_level_values (1) .str.contains ('ne'))] '. HOẶC hoặc VÀ tùy thuộc vào những gì bạn cần. –