小编Jar*_*děk的帖子

类型错误:仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但得到了“RangeIndex”的实例,我不知道为什么

我在熊猫中有这个数据框

        key                              date  story_point  Story point
0   SOF-158  2019-06-04 09:51:01.143000+02:00          3.0          3.0
1   SOF-152  2019-05-24 09:10:23.483000+02:00          3.0          3.0
2   SOF-151  2019-05-24 09:10:14.978000+02:00          3.0          3.0
3   SOF-150  2019-05-24 09:10:23.346000+02:00          3.0          3.0
4   SOF-149  2019-05-24 09:10:23.024000+02:00          3.0          3.0
5   SOF-148  2019-05-24 09:10:23.190000+02:00          3.0          3.0
6   SOF-146  2019-05-24 09:10:22.840000+02:00          5.0          5.0
7   SOF-142  2019-04-15 10:50:03.946000+02:00          2.0          2.0
8   SOF-141  2019-03-29 10:54:08.677000+01:00          2.0          2.0
9   SOF-139  2019-04-15 10:44:56.033000+02:00          3.0          3.0
10  SOF-138  2019-04-15 10:48:53.874000+02:00          3.0          3.0
11  SOF-129  2019-03-28 11:56:17.221000+01:00          5.0          5.0
12  SOF-128 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

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

通过过滤Pyspark Dataframe组

我有一个数据框如下

cust_id   req    req_met
-------   ---    -------
 1         r1      1
 1         r2      0
 1         r2      1
 2         r1      1
 3         r1      1
 3         r2      1
 4         r1      0
 5         r1      1
 5         r2      0
 5         r1      1
Run Code Online (Sandbox Code Playgroud)

我必须看顾客,看看他们有多少要求,看看他们是否至少见过一次.可以存在具有相同客户和要求的多个记录,一个具有满足且未满足的记录.在上面的例子中我的输出应该是

cust_id
-------
  1
  2
  3
Run Code Online (Sandbox Code Playgroud)

我所做的是

# say initial dataframe is df
df1 = df\
    .groupby('cust_id')\
    .countdistinct('req')\
    .alias('num_of_req')\
    .sum('req_met')\
    .alias('sum_req_met')

df2 = df1.filter(df1.num_of_req == df1.sum_req_met)
Run Code Online (Sandbox Code Playgroud)

但在少数情况下,它没有得到正确的结果

如何才能做到这一点 ?

python apache-spark apache-spark-sql pyspark

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

pandas 滚动窗口意味着未来

我想pandas.DataFrame.rolling在具有日期时间的数据框上使用该方法来聚合未来值。看起来只能在过去完成,对吗?

python pandas rolling-average

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

如何在 PySpark 1.6 中将 DataFrame 列从字符串转换为浮点/双精度?

在 PySpark 1.6 DataFrame 中,目前没有 Spark 内置函数可以将字符串转换为浮点数/双精度数。

假设,我们有一个带有 ('house_name', 'price') 的 RDD,两个值都是字符串。您想将价格从字符串转换为浮点数。在 PySpark 中,我们可以应用 map 和 python float 函数来实现这一点。

New_RDD = RawDataRDD.map(lambda (house_name, price): (house_name, float(x.price))    # this works
Run Code Online (Sandbox Code Playgroud)

在 PySpark 1.6 Dataframe 中,它不起作用:

New_DF = rawdataDF.select('house name', float('price')) # did not work
Run Code Online (Sandbox Code Playgroud)

在内置 Pyspark 函数可用之前,如何使用 UDF 实现这种转换?我开发了这个转换 UDF 如下:

from pyspark.sql.functions import udf
from pyspark.sql.types import StringType

def string_to_float(x):
    return float(x)

udfstring_to_float = udf(string_to_float, StringType())
rawdata.withColumn("house name", udfstring_to_float("price"))
Run Code Online (Sandbox Code Playgroud)

有没有更好,更简单的方法来实现相同的目标?

python type-conversion apache-spark-sql pyspark

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

OptionError: "没有这样的键:'display.height'"

所以我一直在试图解决这个问题,但我的熊猫“display.height”选项不起作用,并且出现了OptionError: "No such keys(s): 'display.height'". 这是我所做的。

import pandas as pd
pd.set_option('display.height', 1000)
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
Run Code Online (Sandbox Code Playgroud)

该代码返回以下错误:

C:\Anaconda3\lib\site-packages\pandas\core\config.py in __call__(self, *args, **kwds)
    225 
    226     def __call__(self, *args, **kwds):
--> 227         return self.__func__(*args, **kwds)
    228 
    229     @property

C:\Anaconda3\lib\site-packages\pandas\core\config.py in _set_option(*args, **kwargs)
    117 
    118     for k, v in zip(args[::2], args[1::2]):
--> 119         key = _get_single_key(k, silent)
    120 
    121         o = _get_registered_option(key)

C:\Anaconda3\lib\site-packages\pandas\core\config.py in _get_single_key(pat, silent)
     81         if not silent:
     82             _warn_if_deprecated(pat)
---> 83         raise OptionError('No such keys(s): {pat!r}'.format(pat=pat)) …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas

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

pandas 计算聚合方差

我有一个包含以下列的数据框:DateIDValue。我需要执行均值、中位数和方差Value,我.agg这样使用:

df = dataset\
    .groupby(['ID', pd.Grouper(key='Date', freq='60T')])['Value']\
    .agg(['mean', 'median', 'var'])\
    .reset_index()
Run Code Online (Sandbox Code Playgroud)

它成功计算平均值,但当需要计算中位数时,它只是重复平均值,并且不存储或创建 var 列。结果如下:

      ID                 Date      mean    median  var
0  13834  2017-02-09 12:00:00  1.474920  1.474920  NaN
1  13834  2017-02-09 16:00:00  4.424796  4.424796  NaN
2  13834  2017-02-09 20:00:00  2.241871  2.241871  NaN
3  13834  2017-02-10 00:00:00  2.654867  2.654867  NaN
4  13834  2017-02-10 04:00:00  2.654867  2.654867  NaN
5  13834  2017-02-10 08:00:00  0.511062  0.511062  NaN
Run Code Online (Sandbox Code Playgroud)

在最后一个数字的末尾应该有方差列,但我什么也没得到(或NaNs,如果在数据框中显示)。我该如何解决?

python variance pandas

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

Python:如何用嵌套循环中的下一个替换 tqdm 进度条?

我在 Jupyter Notebook 中使用tqdm模块。假设我有以下带有嵌套 for 循环的代码。

import time
from tqdm.notebook import tqdm

for i in tqdm(range(3)):
    for j in tqdm(range(5)):
        time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

100%|??????????| 3/3 [00:15<00:00, 5.07s/it]
100%|??????????| 5/5 [00:10<00:00, 2.02s/it]

100%|??????????| 5/5 [00:05<00:00, 1.01s/it]

100%|??????????| 5/5 [00:05<00:00, 1.01s/it]
Run Code Online (Sandbox Code Playgroud)

是否有任何选项,如何在运行期间仅显示当前 j进度条?那么,完成迭代后的最终输出会是这样吗?

100%|??????????| 3/3 [00:15<00:00, 5.07s/it]
100%|??????????| 5/5 [00:05<00:00, 1.01s/it]
Run Code Online (Sandbox Code Playgroud)

python jupyter-notebook tqdm

5
推荐指数
2
解决办法
4458
查看次数

如何检查前几个月列表中是否存在标识符

我试图确定标识符是否在给定月份中首先出现(即它对于标识符列表来说是“新的”)。下面是第一次尝试,但它将标识符标记a3为 2020 年 2 月 28 日旧的标识符,尽管它不在 2020 年 1 月 31 日的列表中。

请注意,这是一个简化的示例:实际上,我会有更多的按列分组,而不仅仅是日期,并且我需要检查标识符对于由日期、行业、年龄组合创建的“单元格”是否是新的等等。可能有很多。

import pandas as pd, numpy as np

data = """
date                            identifier     value
 31-Dec-2019                    a1   10
 31-Dec-2019                    a2   20
 31-Dec-2019                    a3   30
 31-Jan-2020                    a1   40
 31-Jan-2020                    a2   50
 31-Jan-2020                    a4   60
 31-Jan-2020                    a5   60
 28-Feb-2020                    a1   70
 28-Feb-2020                    a4   80
 28-Feb-2020                    a3   90
"""

res=[]
for row in [el.split() for el in data.splitlines()][1:]:
    rrow=[]
    for col in row:
        try:
            if float(col):
                col = np.float32(col) …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

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

pandas DataFrame中的if-else条件引用了两行

我有一个示例,其中需要根据if-else条件填充数据框列,该条件引用当前行以及上一行。这是示例数据集:

time = pd.Series(pd.date_range(start='20140101', end='20190901', freq='Q').astype('period[Q]'), name='time')
results = pd.Series(['0','W','W','W','0','0','L','L','L','L','W','W','W','0','0','W','W','W','0','L','L','0'], name='result')
df = pd.concat([time, results], axis=1)
Run Code Online (Sandbox Code Playgroud)

我想创建一个列df['last win'],其中包含的值time对于当前行,如果它是W,或最后time,它有一个W。因此,所需的输出将是:

     time result last_win
0  2014Q1      0      NaT
1  2014Q2      W   2014Q2
2  2014Q3      W   2014Q3
3  2014Q4      W   2014Q4
4  2015Q1      0   2014Q4
5  2015Q2      0   2014Q4
6  2015Q3      L   2014Q4
7  2015Q4      L   2014Q4
8  2016Q1      L   2014Q4
9  2016Q2      L   2014Q4
10 2016Q3      W   2016Q3
11 2016Q4      W   2016Q4
12 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

根据 DataFrame 列中存储的 R、G、B 在绘图 3D 散点图中设置标记颜色

我有以下熊猫数据框:

>>> print(df.head())
         X         Y        Z   R   G   B
0 -846.160 -1983.148  243.229  22  24  19
1 -846.161 -1983.148  243.229  31  37  28
2 -846.157 -1983.148  243.231  20  21  18
3 -846.160 -1983.148  243.230  21  25  18
4 -846.159 -1983.147  243.233  38  48  34
Run Code Online (Sandbox Code Playgroud)

我将其中的数据绘制成 3D 散点图,如下所示:

import plotly.express as px
fig = px.scatter_3d(df, x='X', y='Y', z='Z')
fig.update_traces(marker=dict(size=4), selector=dict(mode='markers'))
fig.show()
Run Code Online (Sandbox Code Playgroud)

情节如下所示。

在此输入图像描述

如您所见,图中的每个标记都是蓝色的。是否有任何选项,如何使用 DataFrame 中的我的R, G,Bdf来更改图中每个标记的颜色?

python python-3.x pandas plotly scatter3d

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