小编dan*_*dar的帖子

多列的pandas get_level_values

有没有一种方法可以获取get_level_values不止一列的结果?

给定以下内容DataFrame

         d
a b c     
1 4 10  16
    11  17
  5 12  18
2 5 13  19
  6 14  20
3 7 15  21
Run Code Online (Sandbox Code Playgroud)

我希望得到的值(水平的元组的列表)ac

[(1, 10), (1, 11), (1, 12), (2, 13), (2, 14), (3, 15)]
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 不能给出get_level_values一个以上的等级(例如 df.index.get_level_values(['a','c']

  • 有一种解决方法,可以get_level_values在每个所需的列上同时使用zip它们:

例如:

a_list = df.index.get_level_values('a').values
c_list = df.index.get_level_values('c').values

print([i for i in zip(a_list,c_list)])
[(1, 10), (1, 11), (1, 12), (2, …
Run Code Online (Sandbox Code Playgroud)

python multi-index dataframe python-3.x pandas

10
推荐指数
1
解决办法
5498
查看次数

通过指定级别的多个值切片MultiIndex DataFrame

我想通过辅助级别的多个值对MultiIndex DataFrame进行切片.例如,在以下DataFrame中:

                val1  val2
ind1 ind2 ind3            
1    6    s1      10     8
2    7    s1      20     6
3    8    s2      30     4
4    9    s2      50     2
5    10   s3      60     0
Run Code Online (Sandbox Code Playgroud)

我希望只切片中的行ind3 == s1 ind3 == s3:

           val1  val2
ind1 ind2            
1    6       10     8
2    7       20     6
5    10      60     0
Run Code Online (Sandbox Code Playgroud)

最好的假设选项是传递多个参数.xs,因为可以明确说明所需的参数level.

我显然可以连接所有切片的单值DataFrame:

In[2]: pd.concat([df.xs('s1',level=2), df.xs('s3',level=2)])
Out[2]:
           val1  val2
ind1 ind2            
1    6       10     8
2    7       20     6 …
Run Code Online (Sandbox Code Playgroud)

python multi-index dataframe pandas

9
推荐指数
2
解决办法
2959
查看次数

删除多级索引熊猫级别的元素

在下面的数据框有一个2级多指标,即citydate:

                 temp
                count
city date            
SFO  2014-05-31    31
     2014-06-30    30
     2014-07-31    31
     2014-08-31    31
     2014-09-30    30
YYZ  2014-05-31    31
     2014-06-30    30
     2014-07-31    31
     2014-08-31    31
     2014-09-30    30
Run Code Online (Sandbox Code Playgroud)

我想放弃2014-05-31,并2014-09-30从该日起的水平.

我该怎么做呢?

评论:构建DataFrame -

df = pd.DataFrame(
    {('temp', 'count'): {('SFO', Timestamp('2014-05-31 00:00:00')): 31,
                         ('SFO', Timestamp('2014-06-30 00:00:00')): 30,
                         ('SFO', Timestamp('2014-07-31 00:00:00')): 31,
                         ('SFO', Timestamp('2014-08-31 00:00:00')): 31,
                         ('SFO', Timestamp('2014-09-30 00:00:00')): 30,
                         ('YYZ', Timestamp('2014-05-31 00:00:00')): 31,
                         ('YYZ', Timestamp('2014-06-30 00:00:00')): 30,
                         ('YYZ', Timestamp('2014-07-31 00:00:00')): 31,
                         ('YYZ', Timestamp('2014-08-31 00:00:00')): …
Run Code Online (Sandbox Code Playgroud)

python indexing multi-index pandas

4
推荐指数
1
解决办法
98
查看次数

使用值和列表向MultiIndex pandas DataFrame添加新行

我有一个MultiIndex DataFrame

                 predicted_y actual_y predicted_full actual_full
subj_id org_clip                                                
123     3                  2        5      [1, 2, 3]   [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

我希望向以下添加新行:

                 predicted_y actual_y predicted_full   actual_full
subj_id org_clip                                                  
123     3                  2        5      [1, 2, 3]     [4, 5, 6]
321     4                 20       50   [10, 20, 30]  [40, 50, 60]    # add this row
Run Code Online (Sandbox Code Playgroud)

而下面的代码可以做到这一点:

df.loc[('321', 4),['predicted_y', 'actual_y']] = [20, 50]
df.loc[('321', 4),['predicted_full', 'actual_full']] = [[10,20,30], [40,50,60]]
Run Code Online (Sandbox Code Playgroud)

但是,当尝试在一行添加新行时,出现错误:

df.loc[('321', 4),['predicted_y', 'actual_y', 'predicted_full', 'actual_full']] = [20, 50, [10,20,30], [40,50,60]]

>>> …
Run Code Online (Sandbox Code Playgroud)

python multi-index dataframe python-3.x pandas

4
推荐指数
2
解决办法
3800
查看次数

从字符串中删除与字母混合的数字

假设我有一个字符串,例如:

string = 'This string 22 is not yet perfect1234 and 123pretty but it can be.'
Run Code Online (Sandbox Code Playgroud)

我想从我的字符串中删除任何与单词混合的数字,例如'perfect1234'and '123pretty'但不是 '22',并获得如下输出:

string = 'This string 22 is not yet perfect and pretty but it can be.'
Run Code Online (Sandbox Code Playgroud)

有没有办法使用正则表达式或任何其他方法在 Python 中做到这一点?任何帮助,将不胜感激。谢谢!

python regex string

-7
推荐指数
2
解决办法
3823
查看次数

标签 统计

python ×5

multi-index ×4

pandas ×4

dataframe ×3

python-3.x ×2

indexing ×1

regex ×1

string ×1