(编辑:我刚刚意识到我想提出一个无法回答的问题,但不确定如何删除此问题...请忽略或建议如何删除。我认为我需要考虑一个不同的问题解决这个问题的方法。)
****** -------------------------------- *****
我有一个名为user_answers的数据框,该数据框是使用get_dummies()形成的。看起来像这样
索引,Q1_1,Q1_2,Q1_4,Q1_5,mas_Y,fhae_Y
1,1,0,0,0,0,0
2,0,0,1,0,1,0
3,0,1,0,0,1,1
4,1,0,0,0,1,0
5,0,0,0,1,1,0
6,0,0,1,0,1,1
7,0,1,0,0,1,1
我需要与名为DF_answers的类似DataFrame进行比较。那个DataFrame看起来像这样
索引,Q1_1,Q1_2,Q1_3,Q1_4,Q1_5,mas_Y,fhae_Y
1,1,0,0,0,0,1,0
2,1,0,0,0,0,1,0
3,0,1,0,0,0,1,1
4,0,0,1,0,0,1,0
5,0,0,0,0,1,1,0
6,1,0,0,0,0,1,1
7,0,0,0,1,0,1,1
我遇到的问题是,当我使用“ get_dummies”时,假设用户没有在原始调查表的7个问题中选择任何一个作为问题的答案,则不会在user_answers数据框中为Q1_3创建一列。我需要尝试使user_answers的输出看起来像这样。因此,即使用户未对7个问题中的任何一个回答Q1_3,get_dummies仍将按照下面的说明输出Q1_3列,其中填充了零。
索引,Q1_1,Q1_2, Q1_3 ,Q1_4,Q1_5,mas_Y,fhae_Y
1,1,0,0,0, 0 ,0,0
2,1,0,0,0, 0 ,1,0
3,0,1,0,0, 0 ,1,1
4,1,0,0,0, 0 ,1,0
5,0,0,0,1, 0 ,1,0
6,1,0,0,0, 0 ,1,1
7,1,0,0,0, 0 ,1,1
我认为我考虑问题的可能性太大了。我读到您可以将列名称列表传递到get_dummies()
答案 0 :(得分:1)
很抱歉延迟,
在下面找到我的尝试
据我了解,以下内容适用
如果这是真的,那是我的愚蠢尝试:
cols = ['ID','Q1_1','Q1_2','Q1_4','Q1_5','mas_Y','fhae_Y']
data = []
for x in enumerate(cols):
data.append(np.random.randint(0,150,size=150))
df = pd.DataFrame(dict(zip(cols,data)))
print(df.head())
ID Q1_1 Q1_2 Q1_4 Q1_5 mas_Y fhae_Y
0 7 76 41 46 57 75 139
1 11 118 65 38 17 116 75
2 111 104 109 110 32 53 106
3 131 14 92 128 14 22 65
4 83 72 148 99 103 133 144
## Create a dummy frame
cols_b = ['ID']
x = 0
for i in range(1,101):
cols_b.append('Q1_' + str(x+i))
data_b = []
for x in enumerate(cols_b):
data_b.append(np.nan)
df2 = pd.DataFrame(dict(zip(cols_b,data_b)),index=[0])
final_cols = list(df2.columns)
final_cols.append('fhae_Y')
final_cols.append('mas_Y')
df = pd.merge(df,df2,how='left')
print(df[final_cols].fillna(0).head(5))
ID Q1_1 Q1_2 Q1_3 Q1_4 Q1_5 Q1_6 Q1_7 Q1_8 Q1_9 ... Q1_93 Q1_94 Q1_95 Q1_96 Q1_97 Q1_98 Q1_99 Q1_100 fhae_Y mas_Y
0 7 76 41 0.0 46 57 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 139 75
1 11 118 65 0.0 38 17 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 75 116
2 111 104 109 0.0 110 32 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 106 53
3 131 14 92 0.0 128 14 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 65 22
4 83 72 148 0.0 99 103 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 144