aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--python/pyspark/sql/types.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/python/pyspark/sql/types.py b/python/pyspark/sql/types.py
index 8bd58d69ee..1f86894855 100644
--- a/python/pyspark/sql/types.py
+++ b/python/pyspark/sql/types.py
@@ -1176,6 +1176,8 @@ class Row(tuple):
>>> row = Row(name="Alice", age=11)
>>> row
Row(age=11, name='Alice')
+ >>> row['name'], row['age']
+ ('Alice', 11)
>>> row.name, row.age
('Alice', 11)
@@ -1243,6 +1245,19 @@ class Row(tuple):
"""create new Row object"""
return _create_row(self, args)
+ def __getitem__(self, item):
+ if isinstance(item, (int, slice)):
+ return super(Row, self).__getitem__(item)
+ try:
+ # it will be slow when it has many fields,
+ # but this will not be used in normal cases
+ idx = self.__fields__.index(item)
+ return super(Row, self).__getitem__(idx)
+ except IndexError:
+ raise KeyError(item)
+ except ValueError:
+ raise ValueError(item)
+
def __getattr__(self, item):
if item.startswith("__"):
raise AttributeError(item)