Python 如何根据条件将某些行的默认值添加到现有数据框中?
我有一个数据集,其中包括有关基金每日表现的信息。在我的完整数据集中,有15年12月1日至17年6月29日之间的每日指标,但并非所有基金都有这些天的信息 我想做的是在最小日期和最大日期(2015年12月1日和2017年6月29日)之间为每天添加行,并为调整后的收盘价设置N/A值Python 如何根据条件将某些行的默认值添加到现有数据框中?,python,pandas,dataframe,conditional-statements,rows,Python,Pandas,Dataframe,Conditional Statements,Rows,我有一个数据集,其中包括有关基金每日表现的信息。在我的完整数据集中,有15年12月1日至17年6月29日之间的每日指标,但并非所有基金都有这些天的信息 我想做的是在最小日期和最大日期(2015年12月1日和2017年6月29日)之间为每天添加行,并为调整后的收盘价设置N/A值 #ORIGINAL DATASET (EXAMPLE) # List of Tuples records = [ ('Fund 1', 34, '12/1/18') , ('Fund 1', 53
#ORIGINAL DATASET (EXAMPLE)
# List of Tuples
records = [ ('Fund 1', 34, '12/1/18') ,
('Fund 1', 53, '12/2/18') ,
('Fund 1', 42, '12/3/18') ,
('Fund 2', 44, '12/3/18') ,
('Fund 1', 32, '12/4/18') ,
('Fund 2', 31, '12/4/18') ,
('Fund 2', 57, '12/5/18') ]
#Create a DataFrame object
dfObj = pd.DataFrame(records, columns = ['Fund' , '$', 'Date'])
dfObj
Fund $ Date
Fund 1 34 12/1/18
Fund 1 53 12/2/18
Fund 1 42 12/3/18
Fund 2 44 12/3/18
Fund 1 32 12/4/18
Fund 2 31 12/4/18
Fund 2 57 12/5/18
这是一个简单的修复方法吗?在您的案例中,使用
堆栈和取消堆栈
df=df.set_index(['Date','Fund']).unstack(fill_value=0).stack().reset_index()
Out[138]:
Date Fund $
0 12/1/18 Fund 1 34
1 12/1/18 Fund 2 0
2 12/2/18 Fund 1 53
3 12/2/18 Fund 2 0
4 12/3/18 Fund 1 42
5 12/3/18 Fund 2 44
6 12/4/18 Fund 1 32
7 12/4/18 Fund 2 31
8 12/5/18 Fund 1 0
9 12/5/18 Fund 2 57
这看起来很棒!如果我想填充多个列的值,而不仅仅是$,该怎么办?我的完整数据集有20多列。很抱歉,我应该在原来的问题中加上这个。@C.G你仍然可以这样做
df=df.set_index(['Date','Fund']).unstack(fill_value=0).stack().reset_index()
Out[138]:
Date Fund $
0 12/1/18 Fund 1 34
1 12/1/18 Fund 2 0
2 12/2/18 Fund 1 53
3 12/2/18 Fund 2 0
4 12/3/18 Fund 1 42
5 12/3/18 Fund 2 44
6 12/4/18 Fund 1 32
7 12/4/18 Fund 2 31
8 12/5/18 Fund 1 0
9 12/5/18 Fund 2 57