Skip to content

Commit 16d17b1

Browse files
committed
WIP: try to fix exchanged axis while interpolating
1 parent 0b1290f commit 16d17b1

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

pandas/core/generic.py

+1
Original file line numberDiff line numberDiff line change
@@ -6923,6 +6923,7 @@ def interpolate(
69236923
data = self._mgr
69246924
print(self)
69256925
print(f'data: {data}')
6926+
# import pdb; pdb.set_trace()
69266927
new_data = data.interpolate(
69276928
method=method,
69286929
axis=axis,

pandas/core/internals/blocks.py

+20-2
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,9 @@ def coerce_to_target_dtype(self, other):
10571057
except (ValueError, TypeError, OverflowError):
10581058
return self.astype(object)
10591059

1060+
def _get_block_indices(self):
1061+
return list(self.mgr_locs)
1062+
10601063
def interpolate(
10611064
self,
10621065
method="pad",
@@ -1071,6 +1074,7 @@ def interpolate(
10711074
downcast=None,
10721075
**kwargs,
10731076
):
1077+
index = self._get_block_indices()
10741078

10751079
inplace = validate_bool_kwarg(inplace, "inplace")
10761080

@@ -1211,8 +1215,22 @@ def func(x):
12111215
)
12121216

12131217
# interp each column independently
1214-
print(data)
1215-
interp_values = np.apply_along_axis(func, 1, data)
1218+
#def get_axis_by_data_length():
1219+
# if len(set(data.shape)) != 1:
1220+
# #import pdb; pdb.set_trace()
1221+
# return data.shape.index(len(index))
1222+
# else:
1223+
# return axis
1224+
1225+
#np_axis = get_axis_by_data_length()
1226+
1227+
#interp_values = np.apply_along_axis(func, np_axis, data)
1228+
interp_values = np.apply_along_axis(func, axis, data)
1229+
#try:
1230+
# interp_values = np.apply_along_axis(func, axis, data)
1231+
#except (AttributeError, IndexError, ValueError):
1232+
# interp_values = np.apply_along_axis(func, 1-axis, data)
1233+
12161234

12171235
blocks = [self.make_block_same_class(interp_values)]
12181236
return self._maybe_downcast(blocks, downcast)

pandas/core/internals/managers.py

+8
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,7 @@ def apply(self: T, f, align_keys=None, **kwargs) -> T:
371371
result_blocks: List[Block] = []
372372
# fillna: Series/DataFrame is responsible for making sure value is aligned
373373

374+
print(kwargs)
374375
self._consolidate_inplace()
375376

376377
aligned_args = {k: kwargs[k] for k in align_keys}
@@ -391,6 +392,8 @@ def apply(self: T, f, align_keys=None, **kwargs) -> T:
391392
# otherwise we have an ndarray
392393
kwargs[k] = obj[b.mgr_locs.indexer]
393394

395+
#if f == 'interpolate':
396+
# import pdb; pdb.set_trace()
394397
if callable(f):
395398
applied = b.apply(f, **kwargs)
396399
else:
@@ -402,6 +405,11 @@ def apply(self: T, f, align_keys=None, **kwargs) -> T:
402405

403406
return type(self).from_blocks(result_blocks, self.axes)
404407

408+
def update_kwargs(self, kwargs, index):
409+
block_kwargs = kwargs.copy()
410+
block_kwargs.update({'index': index})
411+
return block_kwargs
412+
405413
def quantile(
406414
self,
407415
axis: int = 0,

pandas/core/missing.py

+2
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,9 @@ def interpolate_1d(
182182

183183
invalid = isna(yvalues)
184184
valid = ~invalid
185+
import pdb; pdb.set_trace()
185186

187+
# import pdb; pdb.set_trace()
186188
if not valid.any():
187189
# have to call np.asarray(xvalues) since xvalues could be an Index
188190
# which can't be mutated

pandas/tests/frame/methods/test_interpolate.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ def test_interp_basic(self):
2525
"D": list("abcd"),
2626
}
2727
)
28-
result = df.interpolate()
29-
tm.assert_frame_equal(result, expected)
28+
#result = df.interpolate()
29+
#tm.assert_frame_equal(result, expected)
30+
import pdb; pdb.set_trace()
3031

3132
result = df.set_index("C").interpolate()
3233
expected = df.set_index("C")
@@ -59,6 +60,7 @@ def test_interp_combo(self):
5960
result = df["A"].interpolate()
6061
expected = Series([1.0, 2.0, 3.0, 4.0], name="A")
6162
tm.assert_series_equal(result, expected)
63+
print('first interpolation done and worked')
6264

6365
result = df["A"].interpolate(downcast="infer")
6466
expected = Series([1, 2, 3, 4], name="A")

0 commit comments

Comments
 (0)