-
-
Notifications
You must be signed in to change notification settings - Fork 18.5k
TST: add tests for keeping dtype in Series.update #23604
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 11 commits
925237a
9a74273
8a0a7ed
3718979
31317ea
e448675
241de90
528f36f
66b535f
c180b48
437a025
be15e28
71655ec
b736c4b
8f78023
a5610a2
9168f4e
57466dd
0f50a25
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,10 +10,10 @@ | |
import pandas as pd | ||
from pandas import DataFrame, DatetimeIndex, Series, compat, date_range | ||
import pandas.util.testing as tm | ||
from pandas.util.testing import assert_series_equal | ||
from pandas.util.testing import assert_frame_equal, assert_series_equal | ||
|
||
|
||
class TestSeriesCombine(): | ||
class TestSeriesCombine(object): | ||
|
||
def test_append(self, datetime_series, string_series, object_series): | ||
appendedSeries = string_series.append(object_series) | ||
|
@@ -116,8 +116,32 @@ def test_update(self): | |
df = DataFrame([{"a": 1}, {"a": 3, "b": 2}]) | ||
df['c'] = np.nan | ||
|
||
# this will fail as long as series is a sub-class of ndarray | ||
# df['c'].update(Series(['foo'],index=[0])) ##### | ||
df['c'].update(Series(['foo'], index=[0])) | ||
expected = DataFrame([[1, np.nan, 'foo'], [3, 2., np.nan]], | ||
columns=['a', 'b', 'c']) | ||
assert_frame_equal(df, expected) | ||
|
||
@pytest.mark.parametrize('other_values', [ | ||
[61, 63], # int | ||
[61., 63.], # float, but can be cast to int | ||
[61.1, 63.1], # float, cannot be cast to int | ||
[(61,), (63,)] # object | ||
], ids=['int', 'float_castable', 'float', 'object']) | ||
@pytest.mark.parametrize('caller_dtype', ['int', 'float', object]) | ||
def test_update_dtypes(self, caller_dtype, other_values): | ||
caller_values = [10, 11, 12] | ||
s = Series(caller_values, dtype=caller_dtype) | ||
other = Series(other_values, index=[1, 3]) | ||
s.update(other) | ||
|
||
expected_values = [caller_values[0], other_values[0], caller_values[2]] | ||
try: | ||
# we keep original dtype whenever possible | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pls don't use a try except inside the test itself. you should explicity use pytest.raises if you want to catch an exception There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jreback The thing is that If I were to pass expected results through the parametrization, I wouldn't be able to parametrize separately, and would therefore need 12 expected results. This is neither easy to read nor extensible. Please have another look at this test, I think it's quite clear that the try-catch is not about skipping, but about different expected values (which I explained with the comment). |
||
expected = Series(expected_values, dtype=caller_dtype) | ||
except ValueError: | ||
expected = Series(expected_values) | ||
gfyoung marked this conversation as resolved.
Show resolved
Hide resolved
|
||
print(s, expected) | ||
gfyoung marked this conversation as resolved.
Show resolved
Hide resolved
|
||
assert_series_equal(s, expected) | ||
|
||
def test_concat_empty_series_dtypes_roundtrips(self): | ||
|
||
|
Uh oh!
There was an error while loading. Please reload this page.