[问题] dataframe apply

楼主: a822305877 (轻舞飞飏)   2018-07-18 15:42:02
这是我测试的code
def Add_Prefix(df):
for i in range(len(df)):
df[i] = df.name + '_' + df[i]
return df
list2 = [['a','c','k'],['g','h','k'],['d','e','k']]
df2 = pd.DataFrame(list2,columns=['A','B','C'])
print(df2)
df2 = df2.apply(Add_Prefix,axis=0)
print(df2)
但我得到的目标跟我想像中的不太一样
A B C
0 a c k
1 g h k
2 d e k
A B C
0 A_A_a B_c C_k
1 A_A_g B_h C_k
2 A_A_d B_e C_k
我希望得到的是
A B C
0 a c k
1 g h k
2 d e k
A B C
0 A_a B_c C_k
1 A_g B_h C_k
2 A_d B_e C_k
但我搞不懂为什么第一栏总是会处里两次?
找不到关键字只好再来这问了
感谢
作者: TuCH (谬客)   2018-07-18 16:01:00
df2.apply(lambda x:x.name+'_'+x)
作者: tsoahans (ㄎㄎ)   2018-07-18 16:35:00
在pandas apply说明页面里面的notes有提到function不能有side-effects 你在function里面修改了df的值会造成unexpected behavior

Links booklink

Contact Us: admin [ a t ] ucptt.com