aboutsummaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorYanbo Liang <ybliang8@gmail.com>2015-09-10 13:54:20 -0700
committerDavies Liu <davies.liu@gmail.com>2015-09-10 13:54:20 -0700
commit89562a172fd3efa032f60714d600407c6cfe2c2f (patch)
tree6814d077e13802087d71b8916fcd3b299c9e2ea5 /python
parent4204757714b36364611fb63bc008cf90fc53d8df (diff)
downloadspark-89562a172fd3efa032f60714d600407c6cfe2c2f.tar.gz
spark-89562a172fd3efa032f60714d600407c6cfe2c2f.tar.bz2
spark-89562a172fd3efa032f60714d600407c6cfe2c2f.zip
[SPARK-7544] [SQL] [PySpark] pyspark.sql.types.Row implements __getitem__
pyspark.sql.types.Row implements ```__getitem__``` Author: Yanbo Liang <ybliang8@gmail.com> Closes #8333 from yanboliang/spark-7544.
Diffstat (limited to 'python')
-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)