File tree 2 files changed +23
-0
lines changed
2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -1479,6 +1479,23 @@ def __getattr__(self, name):
1479
1479
raise AttributeError ("'%s' object has no attribute '%s'" %
1480
1480
(type (self ).__name__ , name ))
1481
1481
1482
+ def __setattr__ (self , name , value ):
1483
+ """After regular attribute access, try looking up the name of a column.
1484
+ This allows simpler access to columns for interactive use."""
1485
+ if name == '_data' :
1486
+ super (DataFrame , self ).__setattr__ (name , value )
1487
+ else :
1488
+ try :
1489
+ existing = getattr (self , name )
1490
+ if isinstance (existing , Index ):
1491
+ super (DataFrame , self ).__setattr__ (name , value )
1492
+ elif name in self .columns :
1493
+ self [name ] = value
1494
+ else :
1495
+ object .__setattr__ (self , name , value )
1496
+ except (AttributeError , TypeError ):
1497
+ object .__setattr__ (self , name , value )
1498
+
1482
1499
def __setitem__ (self , key , value ):
1483
1500
# support boolean setting with DataFrame input, e.g.
1484
1501
# df[df > df2] = 0
Original file line number Diff line number Diff line change @@ -149,6 +149,12 @@ def test_getattr(self):
149
149
self .assertRaises (AttributeError , getattr , self .frame ,
150
150
'NONEXISTENT_NAME' )
151
151
152
+ def test_setattr_column (self ):
153
+ df = DataFrame ({'foobar' : 1 }, index = range (10 ))
154
+
155
+ df .foobar = 5
156
+ self .assert_ ((df .foobar == 5 ).all ())
157
+
152
158
def test_setitem (self ):
153
159
# not sure what else to do here
154
160
series = self .frame ['A' ][::2 ]
You can’t perform that action at this time.
0 commit comments