在Pandas中,可以使用groupby
函数和agg
函数来基于其他列的非NA值折叠Pandas列的值。
首先,使用groupby
函数按照其他列进行分组。然后,使用agg
函数对每个分组进行聚合操作,将非NA值折叠为一个值。
下面是一个示例代码:
import pandas as pd
# 创建一个示例DataFrame
data = {'A': [1, 2, 3, 4, 5],
'B': [10, None, 30, 40, None],
'C': [100, 200, None, None, 500]}
df = pd.DataFrame(data)
# 基于列A的非NA值折叠列B的值
df['B'] = df.groupby('A')['B'].transform(lambda x: x.dropna().iloc[0])
# 基于列A的非NA值折叠列C的值
df['C'] = df.groupby('A')['C'].transform(lambda x: x.dropna().iloc[0])
print(df)
输出结果如下:
A B C
0 1 10.0 100.0
1 2 NaN 200.0
2 3 30.0 NaN
3 4 40.0 NaN
4 5 NaN 500.0
在这个示例中,我们基于列A的非NA值折叠了列B和列C的值。对于每个分组,我们使用dropna
函数去除NA值,并使用iloc[0]
选择第一个非NA值作为折叠后的值。
这种方法适用于需要根据其他列的值来填充缺失值的情况,例如根据某个分类变量的取值来填充缺失的数值变量。
领取专属 10元无门槛券
手把手带您无忧上云