首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从pandas中的多级DF中检索非空值,并组合多个列

在pandas中,可以使用notnull()函数来检索多级DataFrame中的非空值,并使用apply()函数结合join()函数来组合多个列。

首先,我们需要导入pandas库并创建一个多级DataFrame示例:

代码语言:txt
复制
import pandas as pd

# 创建多级DataFrame示例
data = {'A': {('row1', 'subrow1'): 1, ('row1', 'subrow2'): 2, ('row2', 'subrow1'): None},
        'B': {('row1', 'subrow1'): None, ('row1', 'subrow2'): 4, ('row2', 'subrow1'): 5},
        'C': {('row1', 'subrow1'): 6, ('row1', 'subrow2'): None, ('row2', 'subrow1'): 8}}

df = pd.DataFrame(data)

接下来,我们可以使用notnull()函数检索非空值,并使用apply()函数结合join()函数来组合多个列:

代码语言:txt
复制
# 检索非空值并组合多个列
result = df[df.apply(lambda x: x.notnull().all(), axis=1)].apply(lambda x: '-'.join(x.dropna().astype(str)), axis=1)

在上述代码中,df.apply(lambda x: x.notnull().all(), axis=1)用于检索每一行是否所有列都非空,返回一个布尔Series。然后,df[df.apply(lambda x: x.notnull().all(), axis=1)]用于筛选出所有列都非空的行。

接下来,x.dropna().astype(str)用于删除空值并将剩余的非空值转换为字符串类型。然后,'-'.join(x.dropna().astype(str))用于将剩余的非空值以连接符“-”组合起来。

最后,df[df.apply(lambda x: x.notnull().all(), axis=1)].apply(lambda x: '-'.join(x.dropna().astype(str)), axis=1)将每一行的组合结果作为新的一列添加到结果中。

完整的代码如下所示:

代码语言:txt
复制
import pandas as pd

# 创建多级DataFrame示例
data = {'A': {('row1', 'subrow1'): 1, ('row1', 'subrow2'): 2, ('row2', 'subrow1'): None},
        'B': {('row1', 'subrow1'): None, ('row1', 'subrow2'): 4, ('row2', 'subrow1'): 5},
        'C': {('row1', 'subrow1'): 6, ('row1', 'subrow2'): None, ('row2', 'subrow1'): 8}}

df = pd.DataFrame(data)

# 检索非空值并组合多个列
result = df[df.apply(lambda x: x.notnull().all(), axis=1)].apply(lambda x: '-'.join(x.dropna().astype(str)), axis=1)

print(result)

这将输出:

代码语言:txt
复制
row1  subrow1    1-6
dtype: object

在这个例子中,我们从多级DataFrame中检索了非空值,并将非空值组合成了一个新的列。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券