Python 3.x 如何向某些列添加dataframe中无值的行

Python 3.x 如何向某些列添加dataframe中无值的行,python-3.x,pandas,Python 3.x,Pandas,我有一个数据框,看起来像: month desc value 201911 a 1164 201912 a 971 202001 a 1125 202005 b 1549 202005 a 1038 202006 b 1244 202006 a 1475 202007 a 960 “我的月份”列的范围从201911到202007。列desc具有分类值。 对于desc的每个值,我希望有所有月份的数据,如果它不存在,我将在value列中添加N

我有一个数据框,看起来像:

 month  desc value
201911   a  1164
201912   a   971
202001   a  1125
202005   b  1549
202005   a  1038
202006   b  1244
202006   a  1475
202007   a   960
“我的月份”列的范围从
201911到202007
。列
desc
具有分类值。 对于
desc
的每个值,我希望有所有月份的数据,如果它不存在,我将在
value
列中添加
None

预期产出:

month   desc value
201911   a  1164
201912   a   971
202002   a   None
202003   a   None
202004   a   None
202001   a  1125
202005   b  1549
202005   a  1038
202006   b  1244
202006   a  1475
202007   a   960
201911   b  None
201912   b  None
202001   b  None
202002   b  None
202003   b  None
202004   b  None
202007   b  None
现在,对于每个desc值,我有一个月的时间

有什么更聪明的方法可以做到这一点吗?

您可以通过使用
字符串中的最小值和最大值创建的新
多索引来使用:

df['month'] = pd.to_datetime(df['month'], format='%Y%m')
desc = df['desc'].unique()
d = pd.date_range(df['month'].min(), '2020-07-01', freq='MS')

df = df.set_index(['month', 'desc']) 

mux = pd.MultiIndex.from_product([d, desc], names=['month','desc'])
df = df.reindex(mux).reset_index()
df['month'] = df['month'].dt.strftime('%Y%m')
print (df)
     month desc   value
0   201911    a  1164.0
1   201911    b     NaN
2   201912    a   971.0
3   201912    b     NaN
4   202001    a  1125.0
5   202001    b     NaN
6   202002    a     NaN
7   202002    b     NaN
8   202003    a     NaN
9   202003    b     NaN
10  202004    a     NaN
11  202004    b     NaN
12  202005    a  1038.0
13  202005    b  1549.0
14  202006    a  1475.0
15  202006    b  1244.0
16  202007    a   960.0
17  202007    b     NaN

month
是否由字符串填充?所有值都是唯一的?将
month
设置为索引和重新索引,
fillna
desc
级别使用
None
作为唯一值。你没有得到最后一分吗?您能出示一下吗?订单很重要?另外,您是如何在>之前获得月值的??