我有一个 Dataframe ,看起来像这样
df = pd.DataFrame({'year':[23,23,23,23,23,23], 'month':[1,1,1,2,3,3], 'utility':['A','A','B','A','A','B'], 'state':['NY','NJ','CA','NJ','NY','CA']})
year month utility state
0 23 1 A NY
1 23 1 A NJ
2 23 1 B CA
3 23 2 A NJ
4 23 3 A NY
5 23 3 B CA
我还想为缺少月份的公用事业-状态组合创建新行。因此,新 Dataframe 将如下所示
year month utility state
0 23 1 A NY
1 23 1 A NJ
2 23 1 B CA
3 23 2 A NY
4 23 2 A NJ
5 23 2 B CA
6 23 3 A NY
7 23 3 A NJ
8 23 3 B CA
我知道我可以use a MultiIndex and then reindex,但是使用from_product()方法会导致在原始df中不存在实用程序-状态组合(例如,我不需要实用程序A-CA组合)。
我考虑过将utility和state列连接起来,然后从中得到笛卡尔积,但我认为一定有更简单的方法。
2条答案
按热度按时间fzwojiic1#
一个选项是从pyjanitor中使用
DataFrame.complete
。对于您的数据,您基本上是将(year,month)和(utility,state)组合在一起:@Timeless,恢复你的代码,我会删除我的。你有一个很好的开始,我编辑了你的代码,使它更简单。
1tu0hz3e2#
可能的解决方案:
输出:
我想知道使用
numpy broadcasting
的解决方案是否可行,它是: