2014-01-30 41 views
0

有没有办法在for-loop中更改DataFrame?例如,而不是:在DataFrame上迭代

df_train[df_train > 1] = 1 
df_test[df_test > 1] = 1 

类似:

for frame in [df_train, df_test]: 
    frame = frame[frame > 1] = 1 

在这个版本的原DataFrames也不会改变。我如何用for循环来实现这一点?

回答

3

在下面的行,删除frame =

frame = frame[frame > 1] = 1 
#^^^^^^^ 

>>> import pandas as pd 
>>> 
>>> df_train = pd.DataFrame([0.1, 0.2, 3], columns=['a']) 
>>> df_test = pd.DataFrame([0.1, 5, 0.3], columns=['a']) 
>>> df_train[df_train > 1] = 1 
>>> df_test[df_test > 1] = 1 
>>> for frame in [df_train, df_test]: 
...  frame[frame > 1] = 1 
... 
>>> df_train 
    a 
0 0.1 
1 0.2 
2 1.0 
>>> df_test 
    a 
0 0.1 
1 1.0 
2 0.3