2024-04-19 07:48:51 发布
网友
我有以下df1:
Person Day1 Day2 Day3 1 2 1 1 2 2 0 7 3 4 1 2
然后是另一个df2:
Person Day1 Day2 Day3 1 a b b 2 a c a 3 c b c
因此,这两个数据帧具有相同的索引和列。如何选择df1中在df2中只有“c”的元素
满足条件时,结果应为df1中的值,否则为0:
Person Day1 Day2 Day3 1 0 0 0 2 0 0 0 3 4 0 2
在@jezrael的帮助下,使用^{}的另一个解决方案:
import numpy as np df = pd.DataFrame(np.where(df2.eq('c'), df1, 0), index=df1.index, columns=df1.columns).reset_index()
输出:
Person Day1 Day2 Day3 0 1 0 0 0 1 2 0 0 0 2 3 4 0 2
如果第一列是索引,请使用^{}:
df = df1.where(df2.eq('c'), 0) print (df) Day1 Day2 Day3 Person 1 0 0 0 2 0 0 0 3 4 0 2
如果第一列不是索引,一个可能的想法是选择没有第一列的所有列,然后重新分配:
df1.iloc[:, 1:]= df1.iloc[:, 1:].where(df2.iloc[:, 1:].eq('c'), 0) print (df1) Person Day1 Day2 Day3 0 1 0 0 0 1 2 0 0 0 2 3 4 0 2
或:
df = df1.set_index('Person').where(df2.set_index('Person').eq('c'), 0).reset_index() print (df) Person Day1 Day2 Day3 0 1 0 0 0 1 2 0 0 0 2 3 4 0 2
在@jezrael的帮助下,使用^{} 的另一个解决方案:
输出:
如果第一列是索引,请使用^{} :
如果第一列不是索引,一个可能的想法是选择没有第一列的所有列,然后重新分配:
或:
相关问题 更多 >
编程相关推荐