需求1:
df中有apple和banana列,如果列名在list ["apple","pear"]中,则需要把对应的列值都除以10,我通过遍历cols方式,判断列名是否在list中,有没有办法直接通过lambda apply写在一行中,而不使用for循环遍历呢?
需求2:
对于第二列banana,需要在原来的字符上加上索引号,因为不知道怎么通过lambda获取当前行的索引值,还是写了一个循环,那这个能够通过避免写for循环实现呢?
list = ["apple","pear"]
df = pd.DataFrame({'apple': [1,2,3,4],'banana': ['b1','b2','b3','b4']})
print(df)
apple banana
0 1 b1
1 2 b2
2 3 b3
3 4 b4
cols = df.columns.tolist()
for col in cols: # 对包含在list中的apple 除以10,写了一个循环,是否可以避免循环直接写apply?
if col in list:
df[col] = df[col].apply(lambda x:x/10)
for i, row in df.iterrows(): # 对于第二列banana,需要在原来的字符上加上索引号,这个能够通过避免写循环实现呢?
df.iloc[i,1] = str(i) + "_" + df.iloc[i,1]
print(df)
apple banana
0 0.1 0_b1
1 0.2 1_b2
2 0.3 2_b3
3 0.4 3_b4