小编Gun*_*Gun的帖子

一种使用 Pandas 根据相应行将决策写入列的快速方法?

假设我在数据框中有四列 A、B、C、D df

import pandas as pd

df = pd.read_csv('results.csv')
df 

A     B     C     D
good  good  good  good
good  bad   good  good
good  bad   bad   good
bad   good  good  good
Run Code Online (Sandbox Code Playgroud)

我想添加另一列result。其中的变量应基于相应行的变量。在这里,在我的情况下,如果相应行中至少有三种商品,即 A、B、C、D 列,则结果中的变量应该是validelse notvalid

预期输出:

A     B     C     D     results
good  good  good  good  valid
good  bad   good  good  valid
good  bad   bad   good  notvalid
bad   good  good  good  valid
Run Code Online (Sandbox Code Playgroud)

python pandas

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

使用pandas在同一索引的列中查找连续天数的开始和结束日期

我有一个数据框df

df =

index  date        hats
A1     01-01-2020  5
A1     02-01-2020  10
A1     03-01-2020  16
A1     04-01-2020  16
A1     21-01-2020  9
A1     22-01-2020  8
A1     23-01-2020  7
A6     20-03-2020  5
A6     21-03-2020  5
A8     30-07-2020  12
Run Code Online (Sandbox Code Playgroud)

这里,前四行是连续的天数。我想知道数据框中所有这些连续天数的开始日期和结束日期。如果像 wiseA8索引那样的系列中只有一天,df那么开始日期和结束日期将相同。此外,我也有兴趣了解df['hats']连续天数系列中列中的最高值,并将其日期与其 datehigh_hat一起返回到单独的列中high_hat_date。如果在一系列连续天数中有两个或更多相等的高值,则在新列中num_hat写入高值出现的次数,并在 中写入第一个出现日期high_hat_date

上述数据框的示例输出如下:

index   start_date    end_date    high_hat    high_hat_date   num_hat
A1      01-01-2020    04-01-2020  16          03-01-2020      2
A1      21-01-2020    23-01-2020  9           21-01-2020      1
A6      20-03-2020    21-03-2020  5           20-03-2020 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

在函数中执行循环多重处理的最快方法?

1.我有一个函数var。我想知道通过利用系统拥有的所有处理器、内核、线程和 RAM 内存进行多处理/并行处理来快速运行此函数中的循环的最佳方法。

import numpy
from pysheds.grid import Grid

xs = 82.1206, 72.4542, 65.0431, 83.8056, 35.6744
ys = 25.2111, 17.9458, 13.8844, 10.0833, 24.8306

a = r'/home/test/image1.tif'
b = r'/home/test/image2.tif'

def var(interest):
    
    variable_avg = []
    for (x,y) in zip(xs,ys):
        grid = Grid.from_raster(interest, data_name='map')

        grid.catchment(data='map', x=x, y=y, out_name='catch')

        variable = grid.view('catch', nodata=np.nan)
        variable = numpy.array(variable)
        variablemean = (variable).mean()
        variable_avg.append(variablemean)
    return(variable_avg)

Run Code Online (Sandbox Code Playgroud)

2.var如果我可以针对给定的函数多个参数并行运行函数和循环,那就太好了。var(a)例如:var(b)同时。因为它比单独并行化循环消耗的时间要少得多。

如果没有意义,请忽略 2。

python parallel-processing multithreading multiprocessing python-asyncio

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

在 seaborn 散点图中对分类 x 轴进行排序

我正在尝试使用 seaborn 散点图在数据框中绘制前 30% 的值,如下所示。

在此处输入图片说明

同一图的可重现代码:

import seaborn as sns

df = sns.load_dataset('iris')

#function to return top 30 percent values in a dataframe.
def extract_top(df):
    n = int(0.3*len(df))
    top = df.sort_values('sepal_length', ascending = False).head(n)

    return top

#storing the top values
top = extract_top(df)

#plotting
sns.scatterplot(data = top,
                x='species', y='sepal_length', 
                color = 'black',
                s = 100,
                marker = 'x',)
Run Code Online (Sandbox Code Playgroud)

在这里,我想对 x 轴进行排序order = ['virginica','setosa','versicolor']。当我尝试order用作 中的参数之一时sns.scatterplot(),它返回了一个错误AttributeError: 'PathCollection' object has no property 'order'。正确的做法是什么?

请注意:在数据框中,setosa …

python matplotlib scatter-plot pandas seaborn

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