- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我用 pandas 构建了一个具有多索引列的数据框:
mi = pd.MultiIndex.from_product([['trial_1', 'trial_2', 'trial_3'], ['motor_neuron','afferent_neuron','interneuron'], ['time','voltage','calcium']])
ind = np.arange(1,11)
df = pd.DataFrame(np.random.randn(10,27),index=ind, columns=mi)
Link to image of output dataframe
假设我只想要试验 1 中的电压数据。我知道以下代码会失败,因为索引未按词法排序:
idx = pd.IndexSlice
df.loc[:,idx['trial_1',:,'voltage']]
如上所述in another post ,解决方案是对数据帧的索引进行排序,这按预期工作:
dfSorted = df.sortlevel(axis=1)
dfSorted.loc[:,idx['trial_1',:,'voltage']]
我明白为什么这是必要的。但是,假设我想添加一个新列:
dfSorted.loc[:,('trial_1','interneuron','scaledTime')] = 100 * dfSorted.loc[:,('trial_1','interneuron','time')]
现在 dfSorted 不再排序,因为新列被附加到末尾,而不是按顺序排列。同样,在选择多个列之前,我必须调用 sortlevel
。
我觉得这会导致重复的、容易出错的代码,尤其是在我自己的项目中向更大的数据框中添加大量列时。是否有一种(最好是看起来干净的)方法可以按词法顺序插入新列,而不必一遍又一遍地调用 sortlevel?
最佳答案
一种方法是使用 filter
对列名称进行文本过滤:
In [117]: df['trial_1'].filter(like='voltage')
Out[117]:
motor_neuron afferent_neuron interneuron
voltage voltage voltage
1 -0.548699 0.986121 -1.339783
2 -1.320589 -0.509410 -0.529686
关于python - 添加到多索引 DataFrame 时如何维护 lexsort 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142156/
我有一些数据想要排序,但此方法使用 numpy.lexsort() data = np.zeros(shape=(n,6)) # some routine that partially populat
本文实例讲述了Python实现二维数组按照某行或列排序的方法。分享给大家供大家参考,具体如下: lexsort支持对数组按指定行或列的顺序排序;是间接排序,lexsort不修改原数组,返回索引。
我有一个带有 x 列的 numpy 数组,我想按多列排序(其中一些可能是 np.str_ 类型。我知道我可以做到这使用 np.lexsort。 有没有办法指定每个排序列的升序/降序? 示例:我知道我可
这个功能是如何工作的? import numpy as np first_names = (5,5,5) last_names = (3,1,2) x = np.lexsort((first_name
您好,我想使用 lexsort 排序一个 numpy.array。 import numpy as np surnames = ['Hertz', 'Galilei', 'Hertz'] names
我有一个要排序的数组。有些条目是字符串,因此 numpy 将所有内容都视为字符串(包括数字)。总的来说这很好,我实际上在几个地方利用了它,但是在尝试对其进行排序时会导致一些问题。 基本上,当字符串长度
我有一组制表符分隔的文件,我必须阅读它们,将它们用作 pandas 数据框,对它们进行一大堆操作,然后将它们合并回一个 excel 文件,代码太长了我将讨论其中有问题的部分 我正在解析的选项卡文件包含
假设我用 pandas 构建了一个具有多索引列的数据框: mi = pd.MultiIndex.from_product([['trial_1', 'trial_2', 'trial_3']
我在三个维度上收集了 N 个点。它们存储为 np.array,形状为 (N,3)。所有点都不同,任意两点之间的最小距离为 ~1e-5。我正在寻找一种方法来获得迭代这些点的顺序,该顺序既独立于它们在 n
我正在编写一个程序,根据特定公司内氨基酸的能量值(value)对氨基酸名称进行排序。 我已将相关数据提取到以下 numpy 数组中。 我尝试过这个 In[37]: Data = np.array([
我正在使用 df.loc[(key1, key2)] 为大型多索引 Pandas df 建立索引。有时我会得到一个系列(如预期的那样),但有时我会得到一个数据框。我试图隔离导致后者的情况,但到目前为止
这个问题部分是为了帮助我理解多索引上下文中的词法排序。 假设我有一些 MultiIndexed DataFrame df,对于我想使用的索引: a = (1, 1, 1) 所以要从我写的数据框中提取值
考虑数组a np.random.seed([3,1415]) a = np.random.randint(10, size=(5, 4)) a array([[0, 2, 7, 3],
我有下面这行代码 end_df['Soma Internet'] = end_df.iloc[:,end_df.columns.get_level_values(1) == 'Internet'].
我是一名优秀的程序员,十分优秀!