嗨,我有两个数据帧,如下所示
df1 = pd.DataFrame.from_dict(({"Column":{"0":"A","1":"B","2":"C","3":"A"},"Column2":{"0":"T1","1":"T2","2":"T1","3":"T1"}}))
然后,我使用下面的语句创建了另一个数据帧
df2 = pd.DataFrame(np.zeros(shape=(df1.shape[0],df1.shape[0])), columns=df1['Column'].values, index=df1['Column'].values)
现在我需要更新df2,就好像索引等于列一样,然后赋值1,如果索引不等于列,那么签入df1,如果索引和列值column2值匹配,那么赋值2,否则赋值3
预期结果:
我们可以不使用for循环来实现它吗
注:df1的形状和值每次都可能不同
使用:
步骤:
步骤1:由于原始数据帧包含重复的值,我们可以使用
df.groupby
在Column
上使用cumcount
并将其与df['Column']
连接,以在df1
中创建唯一的索引。然后我们可以从数据帧df1
初始化新的数据帧df2
步骤2:使用^{} 取消数据帧的绑定
步骤3:使用^{} 创建一个布尔掩码
m1
,它对应于df2
中的index
等于df2
中的column
的条件步骤4:使用^{} 创建一个布尔掩码
m2
,该掩码对应于df1['Column2']
中index
和column
的df2
对应值匹配的条件步骤5:使用^{} 根据
[m1, m2]
中的条件从[1, 2]
中选择元素,否则选择默认值3
步骤6:使用^{} 根据
index
和column
值来重塑数据帧第7步:使用^{} 根据} ,删除在步骤1中添加的索引和列中的计数器部分
df1
的索引重新编制df2
的索引和列的索引(重新排列)。然后使用^{相关问题 更多 >
编程相关推荐