Pandas将空行添加为填充符

时间:2015-12-20 04:04:22

标签: python-3.x pandas dataframe

给出以下数据框:

import pandas as pd
DF = pd.DataFrame({'COL1': ['A', 'A','B'], 
                   'COL2' : [1,2,1],
                   'COL3' : ['X','Y','X']})

DF

  COL1  COL2   COL3
0   A    1      X
1   A    2      Y
2   B    1      X

我想为COL1 =' B'添加一行。这样两个值(COL1 A和B)都由COL3值X和Y表示,生成的行中COL2为0。

所需结果如下:

  COL1  COL2   COL3
0   A    1      X
1   A    2      Y
2   B    1      X
3   B    0      Y

这只是一个简化的示例,但我需要一个可以处理许多此类实例的计算(而不仅仅是手动插入感兴趣的行)。

提前致谢!

更新:

对于一个广义的场景,在' COL1'下面有许多不同的值组合。和' COL3',这有效,但可能没有那么高效:

#Get unique set of COL3
COL3SET = set(DF['COL3'])
#Get unique set of COL1
COL1SET = set(DF['COL1'])
#Get all possible combinations of unique sets
import itertools
COMB=[]
for combination in itertools.product(COL1SET, COL3SET):
    COMB.append(combination)
#Create dataframe from new set:
UNQ = pd.DataFrame({'COMB':COMB})

#Split tuples into columns
new_col_list = ['COL1unq','COL3unq']
for n,col in enumerate(new_col_list):
    UNQ[col] = UNQ['COMB'].apply(lambda COMB: COMB[n])
UNQ = UNQ.drop('COMB',axis=1)

#Merge original data frame with unique set data frame
DF = pd.merge(DF,UNQ,left_on=['COL1','COL3'],right_on=['COL1unq','COL3unq'],how='outer')

#Fill in empty values of COL1 and COL3 where they did not have records
DF['COL1'] = DF['COL1unq']
DF['COL3'] = DF['COL3unq']

#Replace 'NaN's in column 2 with zeros
DF['COL2'].fillna(0, inplace=True)

#Get rid of COL1unq and COL3unq
DF.drop(['COL1unq','COL3unq'],axis=1, inplace=True)
DF

0 个答案:

没有答案