可以使用Pandas库中的dropna()方法来删除NaN值,并使用fillna()方法来用非NaN值进行交换。
以下是一个示例代码:
import pandas as pd
# 创建一个包含NaN值的多级索引DataFrame
data = {'A': [1, 2, 3, None, 5],
        'B': [None, 6, 7, 8, 9],
        'C': [10, 11, None, 13, None]}
index = pd.MultiIndex.from_tuples([('x', 'a'), ('x', 'b'), ('y', 'a'), ('y', 'b'), ('z', 'a')])
df = pd.DataFrame(data, index=index)
print("原始DataFrame:")
print(df)
# 按列和多级索引删除NaN值
df = df.dropna()
# 使用非NaN值进行交换
df = df.fillna(method='ffill')
print("删除NaN值并用非NaN值进行交换后的DataFrame:")
print(df)
输出结果:
原始DataFrame:
     A    B     C
x a  1  NaN  10.0
  b  2  6.0  11.0
y a  3  7.0   NaN
  b  NaN  8.0  13.0
z a  5  9.0   NaN
删除NaN值并用非NaN值进行交换后的DataFrame:
     A    B     C
x b  2  6.0  10.0