在 pandas MultiIndex DataFrame 中选择行

2023-11-24

选择/过滤行的最常见的 pandas 方法是什么索引为 MultiIndex 的数据帧?

  • 基于单个值/标签的切片
  • 基于来自一个或多个级别的多个标签进行切片
  • 过滤布尔条件和表达式
  • 哪些方法适用于哪些情况

为简单起见假设:

  1. 输入数据帧没有重复的索引键
  2. 下面的输入数据帧只有两个级别。 (此处显示的大多数解决方案都推广到 N 个级别)

输入示例:

mux = pd.MultiIndex.from_arrays([
    list('aaaabbbbbccddddd'),
    list('tuvwtuvwtuvwtuvw')
], names=['one', 'two'])

df = pd.DataFrame({'col': np.arange(len(mux))}, mux)

         col
one two     
a   t      0
    u      1
    v      2
    w      3
b   t      4
    u      5
    v      6
    w      7
    t      8
c   u      9
    v     10
d   w     11
    t     12
    u     13
    v     14
    w     15

问题1:选择单个项目

如何选择“一”级中具有“a”的行?

         col
one two     
a   t      0
    u      1
    v      2
    w      3

此外,我如何才能在输出中降低级别“1”?

     col
two     
t      0
u      1
v      2
w      3

问题 1b
如何在“二”级上对具有值“t”的所有行进行切片?

         col
one two     
a   t      0
b   t      4
    t      8
d   t     12

问题 2:在一个级别中选择多个值

如何选择与级别“one”中的项目“b”和“d”相对应的行?

         col
one two     
b   t      4
    u      5
    v      6
    w      7
    t      8
d   w     11
    t     12
    u     13
    v     14
    w     15

问题 2b
我如何获得与级别“二”中的“t”和“w”相对应的所有值?

         col
one two     
a   t      0
    w      3
b   t      4
    w      7
    t      8
d   w     11
    t     12
    w     15

问题 3:切割单个横截面(x, y)

如何检索横截面,即具有特定索引值的单行df?具体来说,我如何检索横截面('c', 'u'),由下式给出

         col
one two     
c   u      9

问题 4:切割多个横截面[(a, b), (c, d), ...]

如何选择对应的两行('c', 'u'), and ('a', 'w')?

         col
one two     
c   u      9
a   w      3

问题 5:每级切片一个项目

如何检索与级别“一”中的“a”或级别“二”中的“t”相对应的所有行?

         col
one two     
a   t      0
    u      1
    v      2
    w      3
b   t      4
    t      8
d   t     12

问题六:任意切片

如何切割特定的横截面?对于“a”和“b”,我想选择具有子级别“u”和“v”的所有行,对于“d”,我想选择具有子级别“w”的行。

         col
one two     
a   u      1
    v      2
b   u      5
    v      6
d   w     11
    w     15

问题 7 将使用由数字级别组成的独特设置:

np.random.seed(0)
mux2 = pd.MultiIndex.from_arrays([
    list('aaaabbbbbccddddd'),
    np.random.choice(10, size=16)
], names=['one', 'two'])

df2 = pd.DataFrame({'col': np.arange(len(mux2))}, mux2)

         col
one two     
a   5      0
    0      1
    3      2
    3      3
b   7      4
    9      5
    3      6
    5      7
    2      8
c   4      9
    7     10
d   6     11
    8     12
    8     13
    1     14
    6     15

问题 7:按多索引各个级别上的数值不等式进行过滤

如何获取“第二”级值大于 5 的所有行?

         col
one two     
b   7      4
    9      5
c   7     10
d   6     11
    8     12
    8     13
    6     15

注:这篇文章将not了解如何创建 MultiIndex、如何对其执行赋值操作或任何与性能相关的讨论(这些是另一个单独的主题)。


多重索引/高级索引

Note
这篇文章的结构如下:

  1. OP中提出的问题将一一解决
  2. 对于每个问题,将演示一种或多种适用于解决该问题并获得预期结果的方法。

Notes(很像这个)将包含在内,供有兴趣了解附加功能、实现细节的读者使用, 和其他信息粗略地讨论当前的主题。这些注释已 通过搜索文档并发现各种晦涩难懂的内容进行编译 功能,以及我自己(诚然有限)的经验。

所有代码示例均已在以下平台上创建和测试熊猫 v0.23.4,python3.7。如果某些内容不清楚,或者事实上不正确,或者如果您没有 找到适合您的用例的解决方案,请随时 建议编辑、在评论中请求澄清或打开新的 问题,...如适用。

这里介绍一些我们会经常重温的常见成语(以下简称四大成语)

  1. DataFrame.loc- 按标签选择的通用解决方案(+pd.IndexSlice对于涉及切片的更复杂的应用)

  2. DataFrame.xs- 从系列/数据帧中提取特定的横截面。

  3. DataFrame.query- 动态指定切片和/或过滤操作(即,作为动态计算的表达式。比其他场景更适用于某些场景。另请参阅文档的这一部分用于对多索引进行查询。

  4. 使用生成的掩码进行布尔索引MultiIndex.get_level_values(通常与Index.isin,尤其是在使用多个值进行过滤时)。这在某些情况下也非常有用。

根据四个习语来研究各种切片和过滤问题将有助于更好地理解什么可以应用于特定情况。理解这一点非常重要,即并非所有习语在每种情况下都同样有效(如果有的话)。如果某个习语没有被列为以下问题的潜在解决方案,则意味着该习语无法有效地应用于该问题。


问题1

如何选择“一”级中具有“a”的行?

         col
one two     
a   t      0
    u      1
    v      2
    w      3

您可以使用loc,作为适用于大多数情况的通用解决方案:

df.loc[['a']]

此时,如果你得到

TypeError: Expected tuple, got str

这意味着您使用的是旧版本的 pandas。考虑升级!否则,使用df.loc[('a', slice(None)), :].

或者,您可以使用xs在这里,因为我们正在提取单个横截面。请注意levels and axis参数(这里可以假设合理的默认值)。

df.xs('a', level=0, axis=0, drop_level=False)
# df.xs('a', drop_level=False)

在这里,drop_level=False需要论证来防止xs从结果中删除级别“一”(我们切片的级别)。

这里的另一个选择是使用query:

df.query("one == 'a'")

如果索引没有名称,则需要将查询字符串更改为"ilevel_0 == 'a'".

最后,使用get_level_values:

df[df.index.get_level_values('one') == 'a']
# If your levels are unnamed, or if you need to select by position (not label),
# df[df.index.get_level_values(0) == 'a']

此外,我如何才能在输出中降低级别“1”?

     col
two     
t      0
u      1
v      2
w      3

这可以是easily使用任一完成

df.loc['a'] # Notice the single string argument instead the list.

Or,

df.xs('a', level=0, axis=0, drop_level=True)
# df.xs('a')

请注意,我们可以省略drop_level参数(假设是True默认情况下)。

Note
您可能会注意到,过滤后的 DataFrame 可能仍然具有所有级别,即使它们在打印 DataFrame 时没有显示。例如,

v = df.loc[['a']]
print(v)
         col
one two     
a   t      0
    u      1
    v      2
    w      3

print(v.index)
MultiIndex(levels=[['a', 'b', 'c', 'd'], ['t', 'u', 'v', 'w']],
           labels=[[0, 0, 0, 0], [0, 1, 2, 3]],
           names=['one', 'two'])

您可以使用以下方法摆脱这些级别MultiIndex.remove_unused_levels:

v.index = v.index.remove_unused_levels()
print(v.index)
MultiIndex(levels=[['a'], ['t', 'u', 'v', 'w']],
           labels=[[0, 0, 0, 0], [0, 1, 2, 3]],
           names=['one', 'two'])

问题 1b

如何在“二”级上对具有值“t”的所有行进行切片?

         col
one two     
a   t      0
b   t      4
    t      8
d   t     12

直觉上,你会想要一些涉及slice():

df.loc[(slice(None), 't'), :]

它确实有效!™ 但它很笨重。我们可以使用更自然的切片语法pd.IndexSliceAPI在这里。

idx = pd.IndexSlice
df.loc[idx[:, 't'], :]

这干净得多。

Note
为什么尾随切片:需要跨列吗?这是因为,loc可用于沿两个轴选择和切片(axis=0 or axis=1)。没有明确说明切片是哪个轴 是要完成的,操作变得不明确。见图中红色大框切片的文档.

如果你想消除任何歧义,loc接受一个axis范围:

df.loc(axis=0)[pd.IndexSlice[:, 't']]

如果没有axis参数(即,只需执行df.loc[pd.IndexSlice[:, 't']]),假设切片是在列上进行的, 和一个KeyError在这种情况下会被提出。

这记录在slicers。然而,出于本文的目的,我们将明确指定所有轴。

With xs, it is

df.xs('t', axis=0, level=1, drop_level=False)

With query, it is

df.query("two == 't'")
# Or, if the first level has no name, 
# df.query("ilevel_1 == 't'") 

最后,与get_level_values,你可以这样做

df[df.index.get_level_values('two') == 't']
# Or, to perform selection by position/integer,
# df[df.index.get_level_values(1) == 't']

一切都达到相同的效果。


问题2

如何选择与级别“one”中的项目“b”和“d”相对应的行?

         col
one two     
b   t      4
    u      5
    v      6
    w      7
    t      8
d   w     11
    t     12
    u     13
    v     14
    w     15

使用 loc,可以通过指定列表以类似的方式完成此操作。

df.loc[['b', 'd']]

为了解决上述选择“b”和“d”的问题,还可以使用query:

items = ['b', 'd']
df.query("one in @items")
# df.query("one == @items", parser='pandas')
# df.query("one in ['b', 'd']")
# df.query("one == ['b', 'd']", parser='pandas')

Note
是的,默认解析器是'pandas',但重要的是要强调这种语法不是传统的 python 语法。这 Pandas 解析器生成的解析树与 表达。这样做是为了让一些操作更加直观 指定。欲了解更多信息,请阅读我的帖子使用 pd.eval() 在 pandas 中进行动态表达式评估.

get_level_values + Index.isin:

df[df.index.get_level_values("one").isin(['b', 'd'])]

问题 2b

我如何获得与级别“二”中的“t”和“w”相对应的所有值?

         col
one two     
a   t      0
    w      3
b   t      4
    w      7
    t      8
d   w     11
    t     12
    w     15

With loc, 这个有可能only和这个结合pd.IndexSlice.

df.loc[pd.IndexSlice[:, ['t', 'w']], :] 

第一个冒号: in pd.IndexSlice[:, ['t', 'w']]意味着切过第一层。随着所查询级别的深度增加,您将需要指定更多切片,每个级别被切片一个。您不需要指定更多级别beyond然而,被切片的那个。

With query, 这是

items = ['t', 'w']
df.query("two in @items")
# df.query("two == @items", parser='pandas') 
# df.query("two in ['t', 'w']")
# df.query("two == ['t', 'w']", parser='pandas')

With get_level_values and Index.isin(与上面类似):

df[df.index.get_level_values('two').isin(['t', 'w'])]

问题3

如何检索横截面,即具有特定值的单行 对于索引从df?具体来说,我如何取回十字架 的部分('c', 'u'),由下式给出

         col
one two     
c   u      9

Use loc通过指定键的元组:

df.loc[('c', 'u'), :]

Or,

df.loc[pd.IndexSlice[('c', 'u')]]

Note
此时,你可能会遇到PerformanceWarning看起来像这样:

PerformanceWarning: indexing past lexsort depth may impact performance.

这仅意味着您的索引未排序。 pandas 取决于正在排序的索引(在本例中,按字典顺序排序,因为我们正在处理字符串值)以实现最佳搜索和检索。一个快速的解决方法是对你的 DataFrame 提前使用DataFrame.sort_index。如果您打算这样做,从性能的角度来看,这是特别理想的 串联多个此类查询:

df_sort = df.sort_index()
df_sort.loc[('c', 'u')]

您还可以使用MultiIndex.is_lexsorted()检查索引是否 是否已排序。该函数返回True or False因此。 可以调用该函数来判断是否需要额外排序 步骤是否需要。

With xs,这又是简单地传递一个元组作为第一个参数,并将所有其他参数设置为适当的默认值:

df.xs(('c', 'u'))

With query,事情变得有点笨拙:

df.query("one == 'c' and two == 'u'")

您现在可以看到,这将相对难以概括。但对于这个特定问题仍然可以。

通过跨越多个级别的访问,get_level_values仍然可以使用,但不推荐:

m1 = (df.index.get_level_values('one') == 'c')
m2 = (df.index.get_level_values('two') == 'u')
df[m1 & m2]

问题4

如何选择对应的两行('c', 'u'), and ('a', 'w')?

         col
one two     
c   u      9
a   w      3

With loc,这仍然很简单:

df.loc[[('c', 'u'), ('a', 'w')]]
# df.loc[pd.IndexSlice[[('c', 'u'), ('a', 'w')]]]

With query,您将需要通过迭代横截面和级别来动态生成查询字符串:

cses = [('c', 'u'), ('a', 'w')]
levels = ['one', 'two']
# This is a useful check to make in advance.
assert all(len(levels) == len(cs) for cs in cses) 

query = '(' + ') or ('.join([
    ' and '.join([f"({l} == {repr(c)})" for l, c in zip(levels, cs)]) 
    for cs in cses
]) + ')'

print(query)
# ((one == 'c') and (two == 'u')) or ((one == 'a') and (two == 'w'))

df.query(query)

100% 不推荐!但这是可能的。

如果我有多个级别怎么办?
在这种情况下,一种选择是使用droplevel删除您不检查的级别,然后使用isin测试成员资格,然后对最终结果进行布尔索引。

df[df.index.droplevel(unused_level).isin([('c', 'u'), ('a', 'w')])]

问题5

如何检索与级别“一”中的“a”相对应的所有行或 “二”级中的“t”?

         col
one two     
a   t      0
    u      1
    v      2
    w      3
b   t      4
    t      8
d   t     12

这实际上很难做到loc在保证正确性的同时and仍然保持代码的清晰度。df.loc[pd.IndexSlice['a', 't']]是不正确的,它被解释为df.loc[pd.IndexSlice[('a', 't')]](即选择横截面)。您可能会想到一个解决方案pd.concat单独处理每个标签:

pd.concat([
    df.loc[['a'],:], df.loc[pd.IndexSlice[:, 't'],:]
])

         col
one two     
a   t      0
    u      1
    v      2
    w      3
    t      0   # Does this look right to you? No, it isn't!
b   t      4
    t      8
d   t     12

但您会注意到其中一行是重复的。这是因为该行满足两个切片条件,因此出现了两次。相反,你需要做

v = pd.concat([
        df.loc[['a'],:], df.loc[pd.IndexSlice[:, 't'],:]
])
v[~v.index.duplicated()]

但是,如果您的 DataFrame 本质上包含重复的索引(您想要的),那么这将不会保留它们。请极其谨慎使用.

With query,这非常简单:

df.query("one == 'a' or two == 't'")

With get_level_values,这仍然很简单,但没有那么优雅:

m1 = (df.index.get_level_values('one') == 'a')
m2 = (df.index.get_level_values('two') == 't')
df[m1 | m2] 

问题6

如何切割特定的横截面?对于“a”和“b”,我想选择具有子级别“u”和“v”的所有行,并且 对于“d”,我想选择具有子级别“w”的行。

         col
one two     
a   u      1
    v      2
b   u      5
    v      6
d   w     11
    w     15

这是我添加的一个特殊情况,以帮助理解四个习语的适用性 - 在这种情况下,它们都不会有效地工作,因为切片是very具体的,并且不遵循任何实际模式。

通常,像这样的切片问题需要显式地将键列表传递给loc。这样做的一种方法是:

keys = [('a', 'u'), ('a', 'v'), ('b', 'u'), ('b', 'v'), ('d', 'w')]
df.loc[keys, :]

如果你想节省一些打字,你会认识到有一种模式可以切片“a”,“b”及其子级别,因此我们可以将切片任务分成两部分concat结果:

pd.concat([
     df.loc[(('a', 'b'), ('u', 'v')), :], 
     df.loc[('d', 'w'), :]
   ], axis=0)

“a”和“b”的切片规范稍微干净一些(('a', 'b'), ('u', 'v'))因为每个级别索引的相同子级别都是相同的。


问题7

如何获取“第二”级值大于 5 的所有行?

         col
one two     
b   7      4
    9      5
c   7     10
d   6     11
    8     12
    8     13
    6     15

这可以使用以下方法完成query,

df2.query("two > 5")

And get_level_values.

df2[df2.index.get_level_values('two') > 5]

Note
与此示例类似,我们可以使用这些构造根据任何任意条件进行过滤。一般来说,记住这一点很有用loc and xs专门用于基于标签的索引,而query and get_level_values有助于构建一般条件掩模 用于过滤。


奖金问题

如果我需要切片怎么办MultiIndex column?

实际上,这里的大多数解决方案也适用于列,只需稍作更改。考虑:

np.random.seed(0)
mux3 = pd.MultiIndex.from_product([
        list('ABCD'), list('efgh')
], names=['one','two'])

df3 = pd.DataFrame(np.random.choice(10, (3, len(mux))), columns=mux3)
print(df3)

one  A           B           C           D         
two  e  f  g  h  e  f  g  h  e  f  g  h  e  f  g  h
0    5  0  3  3  7  9  3  5  2  4  7  6  8  8  1  6
1    7  7  8  1  5  9  8  9  4  3  0  3  5  0  2  3
2    8  1  3  3  3  7  0  1  9  9  0  4  7  3  2  7

您需要对四个习语进行以下更改,以使它们与列一起使用。

  1. 切片用loc, use

     df3.loc[:, ....] # Notice how we slice across the index with `:`. 
    

    or,

     df3.loc[:, pd.IndexSlice[...]]
    
  2. To use xs根据需要,只需传递一个参数axis=1.

  3. 您可以直接使用访问列级别值df.columns.get_level_values。然后你需要做类似的事情

     df.loc[:, {condition}] 
    

    Where {condition}表示使用构建的某些条件columns.get_level_values.

  4. To use query,您唯一的选择是转置,查询索引,然后再次转置:

     df3.T.query(...).T
    

    不推荐,使用其他 3 个选项之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pandas MultiIndex DataFrame 中选择行 的相关文章

  • 如果值已经是字符串,我是否应该避免转换为字符串?

    有时您必须使用列表理解将所有内容转换为字符串 包括字符串本身 b str a for a in l 但我必须这样做 b a if type a str else str a for a in l 我想知道是否str在字符串上已经足够优化no
  • 如何修复错误“错误:命令错误,退出状态 1:python。”尝试使用 pip 安装 django-heroku 时[重复]

    这个问题在这里已经有答案了 我正在尝试使用 pip 安装 django heroku 但它一直遇到错误 我看到一些建议告诉我要确保 Heroku 中的 Python 版本是最新的 我已经这么做了 推送到 Heroku master 后 我运
  • 检查字符串是否以 XXXX 开头

    我想知道如何在Python中检查字符串是否以 hello 开头 在 Bash 中我通常这样做 if string hello then do something here fi 我如何在Python中实现同样的效果 aString hell
  • Plotly - 不同颜色的表面

    我正在尝试在 Plotly for Python 中绘制多个曲面 每个曲面具有不同的颜色 具体来说 表面显示了在相空间中不同点采取行动的预测奖励函数 由于我在每个点都有多个可能的操作 因此每个点都是不同的表面 我想对每个表面进行独特的着色
  • 检查对象是否是字符串列表的列表?

    是什么elegant检查对象是否是字符串列表列表的方法 没有嵌套循环 也许这里必须是构造结构化迭代的常规方法 UPD 像这样的东西 l a b c d 1 3 e 2 f def recurse iterable levels result
  • 如何计算具有较大中间值的总和

    我想计算 for n m两个值都是 1000 以内的整数 最终结果是一个不大于 1000 的数字n但中间值对于 python 来说太大了 无法处理 你怎么解决这个问题 我将函数定义如下 from scipy misc import comb
  • 类型错误:无法连接“str”和“instance”对象(python urllib)

    写一个python程序 我在使用时遇到了这个错误urllib urlopen功能 Traceback most recent call last File ChurchScraper py line 58 in
  • Python:选择多个已安装模块版本之一

    在我的系统上 我多次安装了多个模块 举个例子 numpy 1 6 1安装在标准路径中 usr lib python2 7 dist packages 我有一个更新版本numpy 1 8 0安装于 local python lib pytho
  • python 中使用 scipy 截断正态分布

    我正在尝试使用截断正态分布scipy在Python3 我想做一些简单的事情 绘制以 0 5 为中心 范围从 0 到 1 的截断法线的 pdf 我有以下代码行 from scipy import truncnorm import matplo
  • 如何使用 Python Flask-Security 使用 bcrypt 加密密码?

    我正在尝试使用 Flask Security 文档中的标准基本示例 并使其正常工作 除了密码以明文形式存储之外 我知道这一行 user datastore create user email email protected cdn cgi
  • os.path.expanduser("~") 的替代方案?

    在Python 2 7 x中 os path expanduser Unicode 已损坏 这意味着如果 的扩展中包含非 ASCII 字符 则会出现异常 http bugs python org issue13207 http bugs p
  • 将 Python 3 的“范围”“向后移植”到 Python 2 是一个坏主意吗?

    我的一门课程要求用 Python 完成作业 作为练习 我一直使用如下脚本确保我的程序可以在 Python 2 和 Python 3 中运行 bin bash Run some PyUnit tests python2 test py pyt
  • Anaconda (Python) - Windows 10 上的 Cmder 集成

    我在 Windows 10 64 位上通过 Anaconda 让 Cmder 使用 Python 时遇到了一些麻烦 我让 Anaconda 工作得很好 测试过用 matplotlib 绘制一些东西 它与 Anaconda Prompt 一起
  • Python 中的“finally”总是执行吗?

    对于Python中任何可能的try finally块 是否保证finally块总是会被执行吗 例如 假设我在except block try 1 0 except ZeroDivisionError return finally print
  • Python:如何访问 Lotus Notes 8.5 Inbox 来阅读电子邮件

    我想用 python 创建一个脚本 从 Lotus Notes 8 5 读取电子邮件 然后在 jira 中为每封电子邮件创建一个问题 但当我尝试从 Lotus 读取邮件时 它会返回此错误 Traceback most recent call
  • 将glade接口放入python中

    我在 Glade 中制作了一个 gui 我想将其放入 python 程序中 我正在调整我在网上找到的教程中的说明 以将其加载到我的林间空地文件中 http www pygtk org articles pygtk glade gui Cre
  • 是否有比 .apply() 更慢或更受控制的替代方案?

    所以这似乎是一个奇怪的问题 但我有一只熊猫DataFrame其中包含地址 我想对其进行地理编码 以便获得纬度和经度 我有可以使用的代码 apply 感谢这个非常有帮助的线程 使用 geopy pandas 的新列坐标 https stack
  • 使用 PyCharm 分析 Django

    即使在开发环境中 我的应用程序也相当慢 所以我想找出是什么导致它变慢 以便我可以尝试修复它 我了解调试工具栏 根据它的报告 数据库查询和下载的源都不是问题 所以它一定是业务逻辑 但是 我无法使用 Django 服务器运行 PyCharm 分
  • vtkPythonAlgorithm 控制管道执行

    我正在尝试用 python 编写一个 vtk 过滤器ProjectDepthImage进行投影不是问题 它控制 vtk 管道的执行 基本上 我对 UserEvent 有一个回调 当用户在渲染窗口处于活动状态时按下 u 键时会触发该回调 这将
  • 媒体文件上的 404 - Django

    昨晚我将项目上传到 pythonanywhere com 我想在那里测试我的项目生产设置 在我允许的模型之一中用户上传JPG 团队徽标 上传过程运行良好 文件位于我的 MEDIA ROOT 中 问题是 当我尝试在模板中访问它 以将其显示在页

随机推荐

  • 我应该在我的新机器上使用 Eclipse 32 位还是 64 位?

    这可能是一个愚蠢 天真的问题 如果是的话请原谅 我有一台全新机器 具有以下规格 英特尔酷睿 i7 电子邮件受保护 RAM 8 GB Windows 7的 该机器具有 64 位架构 在我以前的机器上 我曾经安装 32 位版本的 Eclipse
  • ThreadPoolExecutor 与 ForkJoinPool:窃取子任务

    来自java文档 ForkJoinPool 与其他类型的 ExecutorService 的不同之处主要在于采用工作窃取 池中的所有线程都尝试查找并执行其他活动任务创建的子任务 如果不存在 则最终阻塞等待工作 当大多数任务产生其他子任务时
  • 以编程方式将图像添加到 RTF 文档

    我正在尝试将图像添加到我正在创建的 RTF 文档中 我宁愿不使用清除剪贴板的 复制 粘贴 方法 涉及将图像粘贴到 RichTextBox 中 然后访问 RTF 属性 因为这会给我的最终用户带来麻烦和困惑 到目前为止 我的代码返回需要插入到
  • Array.map是什么概念?

    我在理解以下概念时遇到问题Array map 我确实访问了 Mozilla 和 Tutorials Point 但他们提供的相关信息非常有限 这就是我使用的方式Array map 它有点复杂 涉及一些 d3 js 忽略它 var mapCe
  • 在用[]添加值之前是否需要声明PHP数组?

    arr array is this line needed arr 5 我知道它不需要第一行就可以工作 但它经常包含在实践中 是什么原因 没有它就不安全吗 我知道你也可以这样做 arr array 5 但我说的是需要一项一项地添加项目的情况
  • ASP.NET MVC 3 多个模型到单个表单

    我正在学习 ASP NET MVC 3 并尝试创建一个具有单个表单的视图 该表单由通过外键链接在一起的多个模型组成 最终目标是将单个表单插入到所有数据库表中 问题是 我无法弄清楚为什么当我右键单击创建视图时 表单没有在 cshtml 文件中
  • 无法打开输出文件 debug\serbest.exe:权限被拒绝

    我用 C 编译 Qt 程序 收到以下错误消息 无法打开输出文件 debug serbest exe 权限被拒绝Collect2 ld 返回 1 退出状态 这些命令的含义是什么 我该如何消除这些错误 最可能的原因 serbest exe 仍在
  • JDBC4中驱动程序类是如何定位的

    JDBC 第 4 版中的重要补充之一您不必显式加载 司机通过电话Class forName不再了 当您的应用程序第一次尝试连接数据库时 DriverManager自动加载找到的驱动程序 应用程序CLASSPATH 我的问题是如何 如果类路径
  • 如何为 IE8 填充 Array.prototype.includes()

    我正在尝试填充数组方法includes 以与IE8一起使用 我需要支持一个项目并且我不想使用indexOf 我知道有一个polyfill 所以我去了 https developer mozilla org en US docs Web Ja
  • AttributeError:类型对象“numpy.ndarray”没有属性“__array_function__”

    我将 numpy 升级到最新版本 现在导入 numpy 时出现以下错误 AttributeError 类型对象 numpy ndarray 没有属性 数组函数 我正在使用 numpy 版本 1 16 使用以下命令卸载 Numpy 的所有安装
  • Gnu-Screen:运行脚本,将命令发送到正在运行的屏幕会话

    是否可以编写一个脚本来更改名称并打开对当前选项卡的监视 假设它正在屏幕中运行 Thanks 从屏幕手册页 X Send the specified command to a running screen session You can us
  • 所有对最大流量

    给定一个有向加权图 如何找到最大流量 or 最小切边 在所有顶点对之间 天真的方法就是简单地调用Max Flow像 Dinic 的算法 其复杂度为O V 2 E 对于每对 因此对于所有对来说都是O V 4 E 是否可以将复杂度降低到O V
  • 如何从 .env 文件设置环境变量

    假设我有 env 文件包含如下行 USERNAME ABC PASSWORD PASS 与正常人不同的是export前缀 所以我无法直接获取文件 创建从 env 文件加载内容并将其设置为环境变量的 shell 脚本的最简单方法是什么 如果您
  • R (purrr) 展平命名列表以列出并保留名称

    也许我遗漏了一些明显的东西 但试图将 R 中的命名列表的命名列表 甚至可能更加嵌套 扁平化为最终一个平面列表 purrr and rlist似乎有这方面的工具 我怎样才能实现子列表的名称成为扁平化结果列表的名称预加密 例如list1 bli
  • 在主对话框中嵌入对话框并通过 MFC 中的按钮单击进行切换

    我有一个如下的设计 所以基本上 我想在应用程序主对话框中嵌入三个对话框并在它们之间切换 对于每个按钮单击 即按钮 1 将显示对话框 1 按钮 2 将隐藏对话框 1 并显示对话框 2 等等 每个对话框都有不同的设计和功能 我尝试使用 CPro
  • 为什么 std::regex_iterator 会导致此数据堆栈溢出?

    我一直在使用std regex iterator解析日志文件 我的程序已经工作了好几个星期 并且已经解析了数百万条日志行 直到今天 当今天我对日志文件运行它并得到堆栈溢出时 事实证明 只有日志文件中的一个日志行导致了问题 有谁知道为什么我的
  • 自从最近引入登录审核以来,我如何测试 Facebook 应用程序?

    我正在开发一个 Facebook 应用程序 它通过 API 调用来获取用户事件列表 该应用程序将使用 Javascript 来调用用户 事件边缘 如下所示 FB api user id events function response if
  • Powershell 中加号 (+) 的特殊使用

    除了其自然用法 即两个参数相加 之外 您还可以使用加号 登录 Powershell 进行特殊调用 如下所示 System Net WebRequestMethods Ftp UploadFile UploadFile是一个公共静态字段 根据
  • C#:以编程方式在工作表范围内创建“命名范围”

    我们如何创建一个 命名范围 其范围设置为工作表 因为我们可以从 Excel 手动执行此操作 所以我想有一种方法可以在代码中执行此操作 使用 设置名称Range Name 属性创建一个工作簿范围的命名范围 我尝试在范围名称前添加 前缀按照建议
  • 在 pandas MultiIndex DataFrame 中选择行

    选择 过滤行的最常见的 pandas 方法是什么索引为 MultiIndex 的数据帧 基于单个值 标签的切片 基于来自一个或多个级别的多个标签进行切片 过滤布尔条件和表达式 哪些方法适用于哪些情况 为简单起见假设 输入数据帧没有重复的索引