如何用Pandas将列中空单元格替换为前一行有效值并统计数量?
解决方案
1. 填充A列的空单元格
你之前的方法无效是因为空单元格被转为了空字符串("")而非NaN,而fillna()只对NaN值生效。正确步骤如下:
- 先将A列中的空字符串替换为
NaN - 使用
ffill()(forward fill)向前填充前一行的有效值
代码示例:
import pandas as pd import numpy as np # 构造你的DataFrame df = pd.DataFrame( {'A': ['Roses', '', 'Tulips', '', 'Cactus', ''], 'B': ['Name1', 'Name2', 'Name3', 'Name4', 'Name5', 'Name6']}, index=[1,2,3,4,5,6] ) # 转换空字符串为NaN,再向前填充 df['A'] = df['A'].replace('', np.nan).ffill()
执行后你会得到目标DataFrame:
A B 1 Roses Name1 2 Roses Name2 3 Tulips Name3 4 Tulips Name4 5 Cactus Name5 6 Cactus Name6
2. 统计每种植物对应的人数
可以用两种方法实现:
方法一:使用value_counts()
plant_count = df['A'].value_counts()
输出结果:
Roses 2 Tulips 2 Cactus 2 Name: A, dtype: int64
方法二:使用groupby()
plant_count = df.groupby('A')['B'].count()
输出结果和上面一致。
内容的提问来源于stack exchange,提问作者Extent3133
相关产品推荐
相关产品推荐

