我在熊猫中有这个数据框
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) 我有一个数据框如下
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)
但在少数情况下,它没有得到正确的结果
如何才能做到这一点 ?
我想pandas.DataFrame.rolling在具有日期时间的数据框上使用该方法来聚合未来值。看起来只能在过去完成,对吗?
在 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)
有没有更好,更简单的方法来实现相同的目标?
所以我一直在试图解决这个问题,但我的熊猫“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) 我有一个包含以下列的数据框:Date、ID和Value。我需要执行均值、中位数和方差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,如果在数据框中显示)。我该如何解决?
我在 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) 我试图确定标识符是否在给定月份中首先出现(即它对于标识符列表来说是“新的”)。下面是第一次尝试,但它将标识符标记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) 我有一个示例,其中需要根据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) 我有以下熊猫数据框:
>>> 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,B列df来更改图中每个标记的颜色?
python ×9
pandas ×7
python-3.x ×3
dataframe ×2
pyspark ×2
apache-spark ×1
plotly ×1
scatter3d ×1
tqdm ×1
variance ×1