我有一个有三列的数据框,每列包含另一个数据框或None
的一列的名称,我想用1/0
填充第二个数据框的每一行,这取决于它的名称是否存在于第一个数据框的三列之一。下面是一个描述期望结果的例子。。。你知道吗
df-1 : col_1 col_2 col_3
----- ----- -----
A None None
A B C
D E B
df-2 (Initially) : A B C D E
- - - - -
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
df-2 (expected) : A B C D E
- - - - -
1 0 0 0 0
1 1 1 0 0
0 1 0 1 1
请注意,第一个数据帧也包含None
值,这些值在最终结果中不是所需要的。你知道吗
我写的一些代码
df_2 = pd.DataFrame(0, index = np.arange(len(df_1)), columns = column_names)
for i in range(0, len(df_1)):
a, b, c = df_1.loc[i, :]
df_2.loc[i, a] = 1
df_2.loc[i, b] = 1
df_2.loc[i, c] = 1
这段代码是基于循环的,显然非常慢,需要更像熊猫的东西。我也,无法处理此代码中的None
值。执行上述代码后,结果类似于。。。你知道吗
A B C D E None
- - - - - ----
1 0 0 0 0 1
1 1 1 0 0 0
0 1 0 1 1 0
所以问题是,如何更快地完成这项工作,以及如何删除名为None
的列。任何见解都将不胜感激。你知道吗
使用^{} ,如果
None
是字符串,则删除列None
,并根据列名称最后获取max
:如果
None
不是字符串,则默认情况下删除它们:相关问题 更多 >
编程相关推荐