>>> df
a b c ...
0 1 2
1 3 4
. ...
我希望b
列加倍。
我知道这个方法
>>> df['b'] *= 2
我可以用方法链接方式执行此操作吗?我想更加难看! 这样的事情。
>>> (df.drop('c', 1)
.someMethodToReplaceBColumnValues())
我有很多方法来清理数据,这是其中一个操作,我对此感到困惑。
我遇到了replace
,set_value
等等。但我无法弄明白。
我也尝试了apply
方法,但它只返回应用了该操作的列。所以我只使用apply方法获得b
列。如何进一步接近?
答案 0 :(得分:3)
您可以尝试assign
:
df = pd.DataFrame({'a':[1,2,3],
'b':[4,5,6],
'c':[7,8,9]})
print (df)
a b c
0 1 4 7
1 2 5 8
2 3 6 9
print (df.drop('c', 1).assign(b=df.b*2))
a b
0 1 8
1 2 10
2 3 12
print (df.drop('c', 1).apply(lambda x: x * 2 if x.name == 'b' else x))
a b
0 1 8
1 2 10
2 3 12
答案 1 :(得分:1)
您可以使用apply,使用自定义函数:
def mult(x, columns):
if x.name in columns:
return x*2
else:
return x
print df.apply(mult, args=(['b', 'c'],))
a b c
0 0 0 0
1 1 2 2
2 2 4 4
请考虑将一个元组作为额外参数传递给apply中的函数!