小编Sos*_*osi的帖子

熊猫:根据更复杂的标准选择和修改数据框

我正在看这个和这个线程,虽然我的问题没有那么不同,但它有一些差异.我有一个数据帧floats,我想用字符串替换.说:

      A     B       C
 A    0     1.5     13
 B    0.5   100.2   7.3
 C    1.3   34      0.01
Run Code Online (Sandbox Code Playgroud)

对于这个表我想用几个标准替换,但只有第一个替换工作:

df[df<1]='N' # Works
df[(df>1)&(df<10)]#='L' # Doesn't work
df[(df>10)&(df<50)]='M'  # Doesn't work
df[df>50]='H'  # Doesn't work
Run Code Online (Sandbox Code Playgroud)

如果我改为基于第二行的选择float,仍然不起作用:

((df.applymap(type)==float) & (df<10) & (df>1)) #Doesn't work
Run Code Online (Sandbox Code Playgroud)

我想知道如何申请pd.DataFrame().mask这里,或任何其他方式.我该怎么解决这个问题?

或者,我知道我可以逐列阅读并在每个系列中应用替换,但这似乎有点适得其反

编辑:任何人都可以解释为什么上面的4个简单分配不起作用?

python pandas

10
推荐指数
3
解决办法
430
查看次数

Jupyter中的熊猫自动补全问题

我遇到了与此用户类似的问题:调用autocomplete时df.col.,即使评估了仅包含一个单元格也没有自动完成df.col。例如,我希望看到df.col.str.matc自动完成df.col.str.match。我该怎么解决?

以以下数据框为例:

import pandas as pd
data = [['Alex in FL','ten'],['Bob in FLORIDA','five'],['Will in GA','three']]
df = pd.DataFrame(data,columns=['Name','Age'])

#Dataframe:
    Name             Age
0   Alex in FL       ten
1   Bob in FLORIDA   five
2   Will in GA       three

#Command that should autocomplete (but does not):
df.Name.str.matc [+TAB]
Run Code Online (Sandbox Code Playgroud)

我不想尝试腹地,因为我只想在按Tab时自动完成。

在此先多谢!

python pandas jupyter jupyter-notebook

7
推荐指数
1
解决办法
126
查看次数

多级pandas数据框中的自定义排序列

背景

我有一个大的数据框,有2个级别的列,但是1级行,我正在尝试按如下方式对其进行排序:级别0:按字母顺序排列; 第1级:自定义排序.

例

import pandas as pd
dictionary = {'A' : {'M': [1,2,3,4,5],
                     'L': [6,7,8,9,1],
                     'F': [3,5,1,3,5]  },
              'C' : {'M': [2,3,4,5,6],
                     'L': [7,8,9,1,2],
                     'F': [0,1,6,3,5]  },
              'B' : {'M': [1,5,2,5,3],
                     'L': [9,5,6,3,4],
                     'F': [6,2,7,1,5] }
         }
reform = {(outerKey, innerKey): values for outerKey, innerDict in dictionary.iteritems() for innerKey, values in innerDict.iteritems()}
pd.DataFrame(reform,index=['g','h','i','j','k'])
Run Code Online (Sandbox Code Playgroud)

我当时拥有的是什么

#        A          B           C
#        F  L   M   F   L   M   F   L   M
#    g  3   6   1   6   9   1   0   7   2 …
Run Code Online (Sandbox Code Playgroud)

python sorting pandas

6
推荐指数
1
解决办法
2116
查看次数

如何以格式化字符串打开文件?

我有一系列文件,{myvar}里面有很多在表单中定义的变量。例如

文件.txt

This is {myvar}.
Run Code Online (Sandbox Code Playgroud)

我想打开它们,并正常替换变量:

with open('path/to/file.txt', 'r') as file:
    myfile = file.read().replace('\n', '')


myvar='myself.'
print(f"{myfile}")
Run Code Online (Sandbox Code Playgroud)

应该输出:

with open('path/to/file.txt', 'r') as file:
    myfile = file.read().replace('\n', '')


myvar='myself.'
print(f"{myfile}")
Run Code Online (Sandbox Code Playgroud)

如何将文件作为格式化字符串打开?或者将字符串转换为格式化字符串?

python string file python-3.x

6
推荐指数
1
解决办法
3306
查看次数

在 JupyterLab 中安装 Jupyter Notebook 扩展?

我开始使用 JupyterLab。我想安装一些当前可用于 Jupyter 的笔记本扩展,但文档表明JupyterLab 目前可用的扩展要少得多。

是否可以安装从 Jupyter 到 JupyterLab 的扩展?如果是这样,如何?

jupyter jupyter-notebook jupyter-lab

5
推荐指数
1
解决办法
2243
查看次数

尽管在 conda-forge 中找到了软件包,但无法满足 conda 软件包:软件包 XXX 需要软件包 YYY,但无法安装任何提供程序

我正在尝试创建一个简单的环境:

channels:
- rdonnelly
- bioconda
- anaconda
- r
- conda-forge
- defaults

dependencies:
- bioconda::bioconductor-mixomics>=6.16
- free::fonts-continuum
- rstudio
Run Code Online (Sandbox Code Playgroud)

mamba env create -f my_env.yaml -n some_env,之后我发现包裹丢失:

Looking for: ["bioconda::bioconductor-mixomics[version='>=6.16']", 'free::fonts-continuum', 'rstudio']


Encountered problems while solving:
  - package rstudio-1.0.153-1 requires qt 5.6.*, but none of the providers can be installed
Run Code Online (Sandbox Code Playgroud)

但是,我可以看到它qt存在于conda-forge:

mamba search conda-forge::qt

# returns
Loading channels: done
# Name                       Version           Build  Channel             
qt                             4.8.7      ha8c56c7_9  conda-forge         
qt                             5.6.2   hbe13537_1012  conda-forge         
qt                             5.6.2 …
Run Code Online (Sandbox Code Playgroud)

conda mamba

5
推荐指数
1
解决办法
4296
查看次数

基于正则表达式字典填充Pandas DataFrame列

我有一个如下数据框:

    GE    GO
1   AD    Weiss
2   KI    Ruby
3   OH    Port
4   ER    Rose
5   KI    Rose
6   JJ    Weiss
7   OH    7UP
8   AD    7UP
9   OP    Coke
10  JJ    Stout
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据列的值添加一列GO.我正在考虑使用字典,但我需要使用正则表达式来识别我的实际案例中的部分匹配.例如:

Dic={'Weiss|\wuby|Sto\w+':'Beer', 'Port|Rose':'Wine','\dUP|Coke':'Soda'}
Run Code Online (Sandbox Code Playgroud)

这会给

    GE    GO    OUT
1   AD    Weiss Beer
2   KI    Ruby  Beer
3   OH    Port  Wine
4   ER    Rose  Wine
5   KI    Rose  Wine
6   JJ    Weiss Beer
7   OH    7UP   Soda
8   AD    7UP   Soda
9   OP    Coke  Soda
10  JJ …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas

3
推荐指数
2
解决办法
948
查看次数

基于python中的多个正则表达式组对字符串列表进行排序

我有一个以下形式的字符串列表:

my_list=['i99_W_t10', 'i99_M_t11', 'i94_M_t12', 'i93_W_t2', ..., 'i14_M_t19']
Run Code Online (Sandbox Code Playgroud)

(所以总是用 分隔 3 个字段_。我想首先按第二个元素对这个列表进行排序,然后是第三个元素,然后是第一个元素。所以上面的列表将变成:

my_list=['i99_M_t11',  'i94_M_t12', 'i14_M_t19', 'i93_W_t2', 'i99_W_t10', ... ]
Run Code Online (Sandbox Code Playgroud)

我知道如何通过将列表转换为 pandas 数据框、将字段拆分为列、对它们进行排序并返回排序后的列表来实现此目的。但也许有一种更优雅的方式直接在列表上完成,而不必去寻找数据帧?

python sorting list

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