根据 Pandas 中的条件添加行

cur*_*kie 3 python dataframe pandas databricks

我有一个 pandas 数据框,如下所示:

指数 水果 数数
0 2021年 03 苹果 2
1 2021年 03 橙子 3
2 2021年 03 芒果 4
3 2021年 04 苹果 1
4 2021年 04 芒果 2
5 2021年 05 苹果 1

假设苹果、橙子和芒果是我唯一感兴趣的水果。

数据框的形成方式是,如果水果的计数(一个月和一年)为 0,则它不会显示为记录。我想将缺失的水果行添加到计数列值 = 0 的数据框中。简而言之,我希望 3 个水果中的每一个都显示年份和月份,而不管计数是否为 0。所以我希望它看起来像这:

指数 水果 数数
0 2021年 03 苹果 2
1 2021年 03 橙子 3
2 2021年 03 芒果 4
3 2021年 04 苹果 1
X 2021年 04 橙子 0
4 2021年 04 芒果 2
5 2021年 05 苹果 1
X 2021年 05 橙子 0
X 2021年 05 芒果 0

感谢任何有关如何解决此问题的建议。

RJ *_*sen 5

您可以使用pyjanitor'scomplete来填充缺失的行:

import io
import pandas as pd

import janitor
data = '''Index Year    Month   Fruit   Count
0   2021    03  Apple   2
1   2021    03  Orange  3
2   2021    03  Mango   4
3   2021    04  Apple   1
4   2021    04  Mango   2
5   2021    05  Apple   1'''

df = pd.read_csv(io.StringIO(data), sep='\t', index_col='Index')

df = df.complete('Fruit', ['Year', 'Month']).fillna(0, downcast='infer').sort_values(['Year', 'Month', 'Fruit'])
Run Code Online (Sandbox Code Playgroud)

输出:

水果 数数
0 2021年 3 苹果 2
2 2021年 3 芒果 4
1 2021年 3 橙子 3
3 2021年 4 苹果 1
4 2021年 4 芒果 2
6 2021年 4 橙子 0
5 2021年 5 苹果 1
8 2021年 5 芒果 0
7 2021年 5 橙子 0