pandas - 有条件地用其他行值填充空行值

标签 pandas numpy dataframe

我有一个如下所示的表(比率列是根据代号和日期从另一个表合并的):

date         codename   ratio
2018-01-01   A          .5
2018-02-01   A          
2018-03-01   A          
2018-01-01   B          
2018-02-01   B
2018-01-01   C          .6
2018-02-01   C            
2018-03-01   C          .7
2018-04-01   C

我需要使用给定代号的最新值填写空比率值

输出应该是:

date         codename   ratio
2018-01-01   A          .5
2018-02-01   A          .5
2018-03-01   A          .5
2018-01-01   B          
2018-02-01   B
2018-01-01   C          .6
2018-02-01   C          .6  
2018-03-01   C          .7
2018-04-01   C          .7

A 得到 0.5,因为这是它唯一的值。 B 保持为空,因为它没有比率。 C 在 2 月份填充了 0.6,因为那是 1 月份的值,但它的 4 月份的值是 0.7,因为那是 3 月份的值。

最佳答案

您可以使用.fillna()填充 NaN 值,其 method 参数允许您向前或向后填充。在本例中,我们希望按代号进行分组,以确保我们不会填写不同的名称。

假设您的数据框名为 df:

df['ratio'] = df.groupby('codename')['ratio'].fillna(method='ffill')

应该可以解决问题。在这之后打印 df 得到我们:

         date codename  ratio
0  2018-01-01        A    0.5
1  2018-02-01        A    0.5
2  2018-03-01        A    0.5
3  2018-01-01        B    NaN
4  2018-02-01        B    NaN
5  2018-01-01        C    0.6
6  2018-02-01        C    0.6
7  2018-03-01        C    0.7
8  2018-04-01        C    0.7

关于pandas - 有条件地用其他行值填充空行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006458/

相关文章:

python - Matplotlib 矩阵/图像明确说明轴值

python - np.isnan 用于 Python 中的数组

pandas - 为一列 Pandas 数据框着色

r - 将事件级数据集转换为 r 中的患者级数据

python - 将数据框中的值替换为另一个数据框中的值 - 正则表达式

python - TypeError : mean() got an unexpected keyword argument 'dtype' # Pandas. 数据帧

python - 如何将字典格式的txt文件转换为python中的数据帧?

python - 通过多索引的子集从 pandas 中选择行

python - 在 python 中附加数据框

python - Python 中向量的高性能全面比较