我在熊猫数据框中有三列C1,C2,C3。我的目标是在C3_i = C1_j时用C2_j替换C1_i。这些都是字符串。我在哪里尝试但是失败了。避免for循环的一种好方法是什么?
如果我的数据框是
df=pd.DataFrame({'c1': ['a', 'b', 'c'], 'c2': ['d','e','f'], 'c3': ['c', 'z', 'b']})
然后我希望将c3替换为['f','z','e']
我尝试过,这需要很长时间。
for i in range(0,len(df)):
for j in range(0,len(df)):
if (df.iloc[i]['c1']==df.iloc[j]['c3']):
df.iloc[j]['c3']=accounts.iloc[i]['c2']
答案 0 :(得分:0)
示例数据:
table_2(x, y, z)
输出:
dataframe = pd.DataFrame({'a':['10','4','3','40','5'], 'b':['5','4','3','2','1'], 'c':['s','d','f','g','h']})
代码:
a b c
0 10 5 s
1 4 4 d
2 3 3 f
3 40 2 g
4 5 1 h
输出:
def replace(df):
if len(dataframe[dataframe.b==df.a]) != 0:
df['a'] = dataframe[dataframe.b==df.a].c.values[0]
return df
dataframe = dataframe.apply(replace, 1)
是您想要的吗?
答案 1 :(得分:0)