diff options
author | Yanbo Liang <ybliang8@gmail.com> | 2015-09-10 13:54:20 -0700 |
---|---|---|
committer | Davies Liu <davies.liu@gmail.com> | 2015-09-10 13:54:20 -0700 |
commit | 89562a172fd3efa032f60714d600407c6cfe2c2f (patch) | |
tree | 6814d077e13802087d71b8916fcd3b299c9e2ea5 | |
parent | 4204757714b36364611fb63bc008cf90fc53d8df (diff) | |
download | spark-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.
-rw-r--r-- | python/pyspark/sql/types.py | 15 |
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) |