小编BMi*_*ell的帖子

有条件的替换熊猫

我可能做的事非常愚蠢,但我很难过.

我有一个数据框,我想替换特定列中超过零值的值.我原以为这是实现这个目标的一种方式:

df[df.my_channel > 20000].my_channel = 0
Run Code Online (Sandbox Code Playgroud)

如果我将频道复制到新的数据框中,那很简单:

df2 = df.my_channel 

df2[df2 > 20000] = 0
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,但似乎不能将频道作为原始数据帧的一部分.

python replace series conditional-statements pandas

101
推荐指数
5
解决办法
16万
查看次数

熊猫:从系列创建DataFrame

我当前的代码如下所示 - 我正在导入一个MAT文件,并尝试从其中的变量创建一个DataFrame:

mat = loadmat(file_path)  # load mat-file
Variables = mat.keys()    # identify variable names

df = pd.DataFrame         # Initialise DataFrame

for name in Variables:

    B = mat[name]
    s = pd.Series (B[:,1])
Run Code Online (Sandbox Code Playgroud)

所以在循环中我可以创建一系列的每个变量(它们是带有两列的数组 - 所以我需要的值在第2列)

我的问题是如何将系列追加到数据帧?我查看了文档,但没有一个例子符合我的要求.

最好的祝福,

python pandas mat

32
推荐指数
3
解决办法
8万
查看次数

如何将pandas组保存为单独的文件

我使用以下语句创建了我的数据的各个组:

df = pd.read_csv(file_path)

grouped = df.groupby(df.some_parameter)
Run Code Online (Sandbox Code Playgroud)

我想做什么(在伪代码中):

for name, group in grouped:
    'Some Text' + name = group
    write to csv
Run Code Online (Sandbox Code Playgroud)

最终结果是原始数据集的每个块的单独的.csv文件.

python pandas

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

TKinter tkFileDialog.askopenfilename 总是在其他窗口后面

我想创建一个简单的 TKinter 文件选择对话框,其中包含一个我将从其他脚本而不是更广泛的 GUI 中使用的功能。

我目前的代码是:

# Select a single file and return the full path as a string
def select_file(data_dir):

    chdir(data_dir)

    root = Tkinter.Tk()
    root.withdraw()

    file_path = tkFileDialog.askopenfilename()

    return file_path
Run Code Online (Sandbox Code Playgroud)

当我运行它时,文件对话框总是在其他窗口后面。如果我将 Spyder 最大化,它会在它后面打开,所以我必须最小化。

有一些与此相关的问题,但我一直无法使任何建议的代码工作,因此如果这被视为重复问题,我们深表歉意。

python tkinter

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

SciPy interp2D用于坐标对

我正在使用scipy.interpolate.interp2d为表面创建插值函数.然后,我有两个真实数据数组,我想计算插值点.如果我将两个数组传递给interp2d函数,我得到一个包含所有点的数组,而不仅仅是几对点.

我的解决方案是将两个数组压缩成一个坐标对列表,并将其传递给循环中的插值函数:

f_interp = interpolate.interp2d(X_table, Y_table,Z_table, kind='cubic')

co_ords = zip(X,Y)
out = []
for i in range(len(co_ords)):
    X = co_ords[i][0]
    Y = co_ords[i][1]
    value = f_interp(X,Y)
    out.append(float(value))
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有更好的(更优雅的,Pythonic?)方式来实现相同的结果?

python interpolation scipy

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

使用列表填充QComboBox

我正在使用PyQT4开发一个GUI对话框,它将一些数据导入到Pandas DataFrame中,然后将数据绘制到嵌入式Matplotlib画布中.

我想将一个变量列表从DataFrame传递给组合框.我的第一次尝试是:

list = list(df.parameter,unique())
self.FirstComboBox = QtGui.QComboBox()
self.FirstComboBox.addItems(list)
Run Code Online (Sandbox Code Playgroud)

但是在运行这个我得到

TypeError: QComboBox.addItems(QStringList): argument 1 has unexpected type 'list'
Run Code Online (Sandbox Code Playgroud)

我已经看到了将dict键的排序列表传递给组合框的示例,所以我很困惑,我无法传递列表.

python qstring pyqt

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

PyQtGraph图形布局小部件问题

我正在尝试在 PyQt 应用程序中使用 PyQtGraph 创建绘图布局。

我需要一行有两个图,前两列宽,第二个单列宽。

阅读文档我认为这样的事情会起作用:

# Create the PyQtGraph Plot area
self.view = pg.GraphicsLayoutWidget()
self.w1 = self.view.addPlot(row=1, col=1, colspan=2, title = 'Data1')
self.w2 = self.view.addPlot(row=1, col=3, colspan=1, title = 'Data2')
Run Code Online (Sandbox Code Playgroud)

但在本例中,我得到两个绘图区域,每个区域占窗口宽度的 50%。

我究竟做错了什么?

此致,

python pyqt pyqtgraph

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

将附加参数传递给 Pandas 自定义访问器

我正在为 Pandas Dataframe 编写一个自定义访问器类 - 我遵循此处的示例并取得了积极的结果。但是我有一个函数想传递额外的参数。

我在我的访问器类中创建了这个函数:

    @property
    def accessor_function(self, time_window=0.5):
        def group_function(df, time):
            fl = df.loc[df.Type_num==0]
            id = fl.Time.idxmin() 
            threshold = df.loc[id, 'column'] + time
        return fl.loc[fl.Time<threshold]

    self.Subset = self._obj.groupby(by['col_1','col_2']).apply(group_function, time_window)
    self.Subset.reset_index(drop=True, inplace=True)

    return self.Subset
Run Code Online (Sandbox Code Playgroud)

如果我这样称呼它,它可以使用time_window=0.5

df.accessor.accessor_function
Run Code Online (Sandbox Code Playgroud)

但是,如果我想为关键字参数传递不同的值:

df.accessor.accessor_function(time_window = 1)
Run Code Online (Sandbox Code Playgroud)

我收到错误:

TypeError: 'DataFrame' object is not callable
Run Code Online (Sandbox Code Playgroud)

我找不到任何解释传递argskwargs自定义访问器的明显文档。所以我不确定我正在尝试的是否可能。但了解如何前进会很好。

python pandas

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

注册 Matplotlib 颜色图

我认为这应该有效:

cm = matplotlib.colors.LinearSegmentedColormap.from_list('phases', ['g', 'y', 'c', 'm', 'b', 'r']
plt.register_cmap('phases', cm)
Run Code Online (Sandbox Code Playgroud)

但是当我输入:

plt.cmap.phases
Run Code Online (Sandbox Code Playgroud)

我收到属性错误。很明显我的 cmap 没有像我想象的那样被注册。但尚不清楚原因。

python matplotlib

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

未定义全局名称“ inf”

我已经开发了一个脚本中的函数。我运行了该脚本以将该函数放置在我的名称空间中。我能正常工作的代码行是:

df.my_variable.replace([inf, -inf, nan, NaN], 0, inplace=True)
Run Code Online (Sandbox Code Playgroud)

我现在将此功能移到mymodule.py。然后,我尝试运行它:

import mymodule as mm
mm.myfun()
Run Code Online (Sandbox Code Playgroud)

现在,要替换的代码行inf等将引发以下错误:

global name 'inf' is not defined
Run Code Online (Sandbox Code Playgroud)

我确定这是在IPython中进行交互式开发的遗产,但是我对如何定义inf才能进行这项工作感到困惑。

python ipython pandas

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

设置matplotlib样式时的AttributeError

我有一个使用以下导入列表的python脚本:

import matplotlib
matplotlib.style.use('ggplot')

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

然后它将文本文件导入到数据框中,在df中创建一些额外的列并创建两个图.

我需要能够从Matlab调用它(由于一些繁琐的原因......)我通过在Matlab提示符下键入以下内容来完成此操作:

dos('myfile.py')
Run Code Online (Sandbox Code Playgroud)

其中引发了以下错误:

Traceback (most recent call last): 
  File "D:\Documents\Python Scripts\XXXXXXXXX.py", line 8, in     <module> 
    matplotlib.style.use('ggplot') 
AttributeError: 'module' object has no attribute 'style' 
Run Code Online (Sandbox Code Playgroud)

但是,如果我评论要求ggplot样式的行,它运行正常并在标准matplotlib格式中正确生成图.

有关为什么会出现这种情况的任何建议?

最好的祝福,

python matplotlib

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

Seaborn PointPlot 类别排序问题

我一直在尝试在 Seaborn 中使用 pointplot,总的来说它可以满足我的需求,而且我对它的功能印象深刻。

我的用例是相当标准的:

sns.pointplot(x="Category_1", y="Parameter", hue="Category 2", data=df);
Run Code Online (Sandbox Code Playgroud)

我的问题是我用于色调的类别包含以下形式的字符串:

"1 string1", "2 string2", "3 string3", etc....
Run Code Online (Sandbox Code Playgroud)

这是设计使然,以便我可以在排序时获得特定顺序。但是,当我运行 Seaborn 函数时,顺序是不同的。

Seaborn 是按照什么逻辑进行排序的,有没有办法强制执行所需的顺序。如果我做:

A = df.Category2.unique()
A.sort()
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的列表顺序。

python seaborn

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