【问题标题】:Pandas DataFrame: append give index by name to end of dfPandas DataFrame:将按名称的索引附加到df的末尾
【发布时间】:2015-04-11 17:01:34
【问题描述】:

我的 df 看起来像:

df_table
Name       exp1
bnb_q8a12    41
bnb_q8a8     36
bnb_q8a2     30
_xexp0       20
_xexp73      16
bnb_q8a7     10
_xexp216     10
bnb_q8a3     10

我希望 df 看起来像这样,所有名为“Net: _xexp..”的索引都附加在 df 的末尾。

df_table
Name       exp1
bnb_q8a12         41
bnb_q8a8          36
bnb_q8a2          30
bnb_q8a7          10
bnb_q8a3          10
Net: _xexp0       20
Net: _xexp73      16
Net: _xexp216     10

我目前正在像这样附加给定的索引,但我确定有更好的方法吗?

res = df_table.index.tolist()
nets = []
for i in df_table.index:
    if 'Net: ' in i:
        nets.append(res.pop(res.index(i)))

res.extend(nets)
df_table = df_table.reindex(res)

【问题讨论】:

  • 所以你想把这些行放在前面,然后把它们移到 df 的末尾?这也是您的索引而不是您的列吗?

标签: pandas append dataframe rows reindex


【解决方案1】:

使用向量化的str.contains 方法来屏蔽包含字符串的行的df 并将str 放在前面。 由于它目前是您的索引,因此重置索引以将其恢复为列可能更简单,然后过滤行并添加文本,在过滤后的行上使用 concat 重新排序它们,然后再次设置索引:

In [64]:

df = df.reset_index()
df.loc[df.Name.str.contains('_xexp'), 'Name'] = 'Net: ' + df.Name
df
Out[64]:
            Name  exp1
0      bnb_q8a12    41
1       bnb_q8a8    36
2       bnb_q8a2    30
3    Net: _xexp0    20
4   Net: _xexp73    16
5       bnb_q8a7    10
6  Net: _xexp216    10
7       bnb_q8a3    10

In [65]:

df = pd.concat([df[~df.Name.str.contains('_xexp')], df[df.Name.str.contains('_xexp')]])
df
Out[65]:
            Name  exp1
0      bnb_q8a12    41
1       bnb_q8a8    36
2       bnb_q8a2    30
5       bnb_q8a7    10
7       bnb_q8a3    10
3    Net: _xexp0    20
4   Net: _xexp73    16
6  Net: _xexp216    10
In [66]:

df = df.set_index('Name')
df
Out[66]:
               exp1
Name               
bnb_q8a12        41
bnb_q8a8         36
bnb_q8a2         30
bnb_q8a7         10
bnb_q8a3         10
Net: _xexp0      20
Net: _xexp73     16
Net: _xexp216    10

【讨论】:

    猜你喜欢
    • 2020-09-06
    • 2022-06-11
    • 2012-11-20
    • 2016-10-24
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多