Skip to content

Commit 3d1ed79

Browse files
committed
change conditional to is_list_like, add tests for pivot values
1 parent 1330b9f commit 3d1ed79

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

pandas/tools/pivot.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,9 @@ def pivot_table(data, values=None, index=None, columns=None, aggfunc='mean',
9494

9595
values_passed = values is not None
9696
if values_passed:
97-
if isinstance(values, (list, tuple)):
97+
if com.is_list_like(values):
9898
values_multi = True
99+
values = list(values)
99100
else:
100101
values_multi = False
101102
values = [values]

pandas/tools/tests/test_pivot.py

+18
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,24 @@ def test_pivot_dtaccessor(self):
736736
index=['X', 'Y'], columns=exp_col)
737737
tm.assert_frame_equal(result, expected)
738738

739+
def test_pivot_table_with_iterator_values(self):
740+
aggs = {'D': 'sum', 'E': 'mean'}
741+
742+
pivot_values_list = pd.pivot_table(
743+
self.data, index=['A'], values=list(aggs.keys()), aggfunc=aggs,
744+
)
745+
746+
pivot_values_keys = pd.pivot_table(
747+
self.data, index=['A'], values=aggs.keys(), aggfunc=aggs,
748+
)
749+
tm.assert_frame_equal(pivot_values_keys, pivot_values_list)
750+
751+
agg_values_gen = (value for value in aggs.keys())
752+
pivot_values_gen = pd.pivot_table(
753+
self.data, index=['A'], values=agg_values_gen, aggfunc=aggs,
754+
)
755+
tm.assert_frame_equal(pivot_values_gen, pivot_values_list)
756+
739757

740758
class TestCrosstab(tm.TestCase):
741759

0 commit comments

Comments
 (0)