From: den <den@dens-mbp.lan>
Date: Fri, 14 Feb 2020 11:09:46 -0800
Subject: update with pandas 1.0.1
Forwarded: https://github.com/biocore/scikit-bio/pull/1694

--- python-skbio.orig/skbio/alignment/_tabular_msa.py
+++ python-skbio/skbio/alignment/_tabular_msa.py
@@ -2257,9 +2257,22 @@
         # TODO: update when #1198 is implemented.
         joined_positional_metadata = None
         if joined_seqs:
-            joined_positional_metadata = pd.concat(
-                [self.positional_metadata, other.positional_metadata],
-                ignore_index=True, sort=True, **concat_kwargs)
+            if how == 'left':
+                joined_positional_metadata = pd.concat(
+                    [self.positional_metadata,
+                     other.positional_metadata.reindex(
+                        columns=self.positional_metadata.columns)],
+                    ignore_index=True, sort=True)
+            elif how == 'right':
+                joined_positional_metadata = pd.concat(
+                    [self.positional_metadata.reindex(
+                        columns=other.positional_metadata.columns),
+                     other.positional_metadata],
+                    ignore_index=True, sort=True)
+            else:
+                joined_positional_metadata = pd.concat(
+                    [self.positional_metadata, other.positional_metadata],
+                    ignore_index=True, sort=True, **concat_kwargs)
 
             if not self.has_positional_metadata():
                 del self.positional_metadata
@@ -2403,6 +2416,8 @@
         """
         series = self._seqs.sort_index(ascending=ascending, level=level)
         self._seqs = series
+        positional_metadata = self.positional_metadata.sort_index(axis=1)
+        self.positional_metadata = positional_metadata
 
     @experimental(as_of='0.4.1')
     def to_dict(self):
--- python-skbio.orig/skbio/stats/distance/_base.py
+++ python-skbio/skbio/stats/distance/_base.py
@@ -1068,7 +1068,7 @@
     if column not in df:
         raise ValueError("Column '%s' not in DataFrame." % column)
 
-    grouping = df.loc[distance_matrix.ids, column]
+    grouping = df.reindex(distance_matrix.ids, axis=0).loc[:, column]
     if grouping.isnull().any():
         raise ValueError(
             "One or more IDs in the distance matrix are not in the data "
--- python-skbio.orig/skbio/stats/distance/_bioenv.py
+++ python-skbio/skbio/stats/distance/_bioenv.py
@@ -167,7 +167,7 @@
 
     # Subset and order the vars data frame to match the IDs in the distance
     # matrix, only keeping the specified columns.
-    vars_df = data_frame.loc[distance_matrix.ids, columns]
+    vars_df = data_frame.reindex(distance_matrix.ids, axis=0).loc[:, columns]
 
     if vars_df.isnull().any().any():
         raise ValueError("One or more IDs in the distance matrix are not "
--- python-skbio.orig/skbio/stats/distance/_permdisp.py
+++ python-skbio/skbio/stats/distance/_permdisp.py
@@ -9,6 +9,7 @@
 from functools import partial
 
 import numpy as np
+import pandas as pd
 from scipy.stats import f_oneway
 from scipy.spatial.distance import cdist
 
@@ -244,7 +245,7 @@
     if test_type == 'centroid':
         centroids = samples.groupby('grouping').aggregate('mean')
     elif test_type == 'median':
-        centroids = samples.groupby('grouping').aggregate(_config_med)
+        centroids = samples.groupby('grouping').apply(_config_med)
 
     for label, df in samples.groupby('grouping'):
         groups.append(cdist(df.values[:, :-1], [centroids.loc[label].values],
@@ -262,4 +263,4 @@
     and transpose the vector to be compatible with hd.geomedian
     """
     X = x.values[:, :-1]
-    return np.array(hd.geomedian(X.T))
+    return pd.Series(np.array(hd.geomedian(X.T)), index=x.columns[:-1])
--- python-skbio.orig/skbio/stats/gradient.py
+++ python-skbio/skbio/stats/gradient.py
@@ -648,7 +648,7 @@
             trajectory = np.array([np.linalg.norm(center)])
             calc = {'avg': trajectory[0]}
         else:
-            trajectory = np.array([np.linalg.norm(row[1].get_values() - center)
+            trajectory = np.array([np.linalg.norm(row[1].to_numpy() - center)
                                    for row in trajectories.iterrows()])
             calc = {'avg': np.average(trajectory)}
 
@@ -697,8 +697,8 @@
             # Loop through all the rows in trajectories and create '2-norm'
             # by taking the norm of the 2nd row - 1st row, 3rd row - 2nd row...
             trajectory = \
-                np.array([np.linalg.norm(trajectories.iloc[i+1].get_values() -
-                                         trajectories.iloc[i].get_values())
+                np.array([np.linalg.norm(trajectories.iloc[i+1].to_numpy() -
+                                         trajectories.iloc[i].to_numpy())
                           for i in range(len(trajectories) - 1)])
             calc = {'2-norm': np.linalg.norm(trajectory)}
 
@@ -747,8 +747,8 @@
             calc = {'mean': trajectory[0], 'std': 0}
         else:
             vec_norm = \
-                np.array([np.linalg.norm(trajectories.iloc[i+1].get_values() -
-                                         trajectories.iloc[i].get_values())
+                np.array([np.linalg.norm(trajectories.iloc[i+1].to_numpy() -
+                                         trajectories.iloc[i].to_numpy())
                           for i in range(len(trajectories) - 1)])
             trajectory = np.diff(vec_norm)
             calc = {'mean': np.mean(trajectory), 'std': np.std(trajectory)}
@@ -832,8 +832,8 @@
             calc = {'mean': trajectory, 'std': 0}
         else:
             vec_norm = \
-                np.array([np.linalg.norm(trajectories.iloc[i+1].get_values() -
-                                         trajectories.iloc[i].get_values())
+                np.array([np.linalg.norm(trajectories.iloc[i+1].to_numpy() -
+                                         trajectories.iloc[i].to_numpy())
                           for i in range(len(trajectories) - 1)])
             # windowed first differences won't be able on every group,
             # specially given the variation of size that a trajectory tends
--- python-skbio.orig/skbio/stats/ordination/_ordination_results.py
+++ python-skbio/skbio/stats/ordination/_ordination_results.py
@@ -321,7 +321,7 @@
             if column not in df:
                 raise ValueError("Column '%s' not in data frame." % column)
 
-            col_vals = df.loc[ids, column]
+            col_vals = df.reindex(ids, axis=0).loc[:, column]
 
             if col_vals.isnull().any():
                 raise ValueError("One or more IDs in the ordination results "
