我有一个包含两列的数据框,其中包含经度和纬度坐标:
将熊猫作为pd导入
values = {'Latitude': {0: 47.021503365600005,
1: 47.021503365600005,
2: 47.021503365600005,
3: 47.021503365600005,
4: 47.021503365600005,
5: 47.021503365600005},
'Longitude': {0: 15.481974060399999,
1: 15.481974060399999,
2: 15.481974060399999,
3: 15.481974060399999,
4: 15.481974060399999,
5: 15.481974060399999}}
df = pd.DataFrame(values)
df.head()
Run Code Online (Sandbox Code Playgroud)
现在,我想在数据框上应用滚动窗口函数,该函数采用一行和另一行(窗口大小为2)的经度和纬度(两列)来计算hasrsine距离。
def haversine_distance(x):
print (x)
df.rolling(2, axis=1).apply(haversine_distance)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我从未获得全部四个值Lng1,Lat1(第一行)和Lng2,Lat2(第二行)。如果我使用axis = 1,则将获得第一行的Lng1和Lat1。如果我使用axis = 0,那么我将获得第一行和第二行的Lng1和Lng2,但仅限经度。
如何使用两行两列应用滚动窗口?有点像这样:
def haversine_distance(x):
row1 = x[0]
row2 = x[1]
lng1, lat1 = row1['Longitude'], row1['Latitude']
lng2, lat2 = row2['Longitude'], row2['Latitude']
# do your stuff here
return 1
Run Code Online (Sandbox Code Playgroud)
目前,我正在通过shift(-1)将数据框与其自身连接在一起,从而在一行中生成所有四个坐标,从而进行此计算。但是滚动也应该是可能的。另一种选择是将Lng和Lat合并为一列,并在其上应用axis = 0的滚动。但是必须有一种更简单的方法,对吗?
我用XML获得了这种风格:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppTheme.Base"/>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/teal_500</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/teal_700</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">@color/light_blue_500</item>
<!-- needed to suppress the old ActionBar when using the new Toolbar -->
<item name="android:windowActionBar">false</item>
<!-- …Run Code Online (Sandbox Code Playgroud) 我的原始数据采用表格格式。它包含来自不同变量的观察结果。每个观察带有变量名,时间戳和当时的值。
变量[string],时间[datetime],值[float]
数据作为Parquet存储在HDFS中,并加载到Spark Dataframe(df)中。从该数据帧。
现在,我想为每个变量计算默认统计信息,例如均值,标准偏差和其他统计信息。之后,一旦检索到均值,我便要过滤/计算那些与均值紧密相关的变量的值。
由于对其他问题的回答,我想到了以下代码:
from pyspark.sql.window import Window
from pyspark.sql.functions import *
from pyspark.sql.types import *
w1 = Window().partitionBy("Variable")
w2 = Window.partitionBy("Variable").orderBy("Time")
def stddev_pop_w(col, w):
#Built-in stddev doesn't support windowing
return sqrt(avg(col * col).over(w) - pow(avg(col).over(w), 2))
def isInRange(value, mean, stddev, radius):
try:
if (abs(value - mean) < radius * stddev):
return 1
else:
return 0
except AttributeError:
return -1
delta = col("Time").cast("long") - lag("Time", 1).over(w2).cast("long")
#f = udf(lambda (value, mean, stddev, radius): abs(value - mean) …Run Code Online (Sandbox Code Playgroud) 对不起,我知道经常会问这个问题.但非场景适合我的问题.
我在Git中使用Eclipse(在Win7中).在Git分支中,我创建了一个新项目.然后我换回了主分支.项目不在工作区中.但是当我想添加它时,我收到以下错误:
无法导入部分或全部项目,因为它们已存在于工作区中
我的问题是,项目不在工作区中 - 如Eclipse中所示.但可以肯定的是,它位于硬盘上,因为它是我的Git存储库的一部分.所以我不能删除它.根据其他帖子,我将其从此文件夹中删除:
C:\开发\ workspace.metadata.plugins\org.eclipse.core.resources.projects
但我仍然无法将其重新添加到Eclipse工作区.任何的想法?
我需要一个看起来像旋转进度圈的 drawable。我想在 GridView 等内的 ImageView 中使用的那个 drawable。
因此,根据其他帖子,我从文件夹 \sdk\platforms\android-xx\data\res\drawable 中取出了progress_medium_holo.xml,看起来像这样。我还复制了这个 drawable 使用的 PNG 文件。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:drawable="@drawable/spinner_48_outer_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="1080" />
</item>
<item>
<rotate
android:drawable="@drawable/spinner_48_inner_holo"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="720"
android:toDegrees="0" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
在我的布局中,我然后使用了这个 ImageView,它使用了进度可绘制。
<ImageView
android:id="@+id/element_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:src="@drawable/progress_medium_holo" />
Run Code Online (Sandbox Code Playgroud)

但结果是一个静态的循环进程。有没有一种方法可以通过 XML 定义并且不使用代码来制作动画?
我想将视图的边界投影/转换为屏幕坐标。局部范围是0,0,1280,628,正好在我的视图上方的ActionBar高108像素。
问题是view.getLocationOnScreen将第一个点转换为正确的0x108。但它也会将所有其他角(1280x0、1280x628、0x628)再次转换为0x180。知道为什么吗?
那是我的代码。
public static void getLocationOnScreen(View view, final Rect src, Rect dst) {
if (view == null || src == null)
return;
if (dst == null)
dst = new Rect();
Point[] corners = RectTools.getCornerPoints(src);
int[] location = new int[2];
for (int i = 0; i < corners.length; i++) {
Point current = corners[i];
location[0] = current.x;
location[1] = current.y;
view.getLocationOnScreen(location);
corners[i] = new Point(location[0], location[1]);
}
createRectangle(dst, corners);
}
Run Code Online (Sandbox Code Playgroud) 我的问题与Kaggle 数据科学竞赛有关。我正在尝试从包含28x28 图像的1 位灰度像素信息(0 到 255)的一维数组中读取图像。因此数组从0 到 783,其中每个像素都编码为 x = i * 28 + j。
转换成二维 28x28 矩阵如下:
000 001 002 003 ... 026 027
028 029 030 031 ... 054 055
056 057 058 059 ... 082 083
| | | | ... | |
728 729 730 731 ... 754 755
756 757 758 759 ... 782 783
Run Code Online (Sandbox Code Playgroud)
出于图像处理(调整大小、倾斜)的原因,我想将该数组读入内存中的 PIL 图像。我对Matplotlib 图像函数做了一些研究,我认为这是最有前途的。另一个想法是Numpy 图像函数。
我正在寻找的是一个代码示例,它向我展示了如何通过 Numpy …
我有一个问题是为了更好地理解 Apache Hadoop Spark 中的大数据概念。不确定它在本论坛中是否偏离主题,但请告诉我。
想象一个 Apache Hadoop 集群有 8 个服务器,由 Yarn 资源管理器管理。我将一个文件上传到 HDFS(文件系统),该文件配置了 64MB 块大小和 3 个复制计数。然后将该文件拆分为 64MB 块。现在让我们假设块由 HDFS 分发到节点 1、2 和 3。
但现在我正在用 Jupyter 笔记本编写一些 Python 代码。因此,笔记本使用以下命令启动:
PYSPARK_DRIVER_PYTHON=jupyter PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark --master yarn-client --num-executors 3 --executor-cores 4 --executor-memory 16G
在笔记本中,我从 HDFS 加载文件以进行一些分析。当我执行我的代码时,我可以在 YARN Web-UI 中看到我有 3 个执行程序以及如何将作业提交(分发)给执行程序。
有趣的部分是,我的执行器在启动命令之后立即固定到特定的计算节点(见上文)。例如节点 6、7 和 8。
我的问题是:
我真的很想更好地理解这一点。
想象一下,您正在通过 SparkContext 和 Hive 加载一个大型数据集。所以这个数据集然后分布在你的 Spark 集群中。例如,对数千个变量的观察(值 + 时间戳)。
现在您将使用一些 map/reduce 方法或聚合来组织/分析您的数据。例如按变量名称分组。
分组后,您可以获得每个变量的所有观察值(值)作为时间序列数据框。如果您现在使用 DataFrame.toPandas
def myFunction(data_frame):
data_frame.toPandas()
df = sc.load....
df.groupBy('var_name').mapValues(_.toDF).map(myFunction)
Run Code Online (Sandbox Code Playgroud)
我在 Google Big Query 中有两个表。第一个表是产品目录 (1:1),第二个表是产品相关信息 (1:n)。对于查询,我将两者都加入。但连接失败,因为pid两个表中都存在该列和其他一些列。
#standardSQL
SELECT tbl1.*, tbl2.* FROM (
SELECT * FROM `my_project.my_dataset.my_table_1`
) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
ON tbl1.pid = tbl2.pid
WHERE tbl1.category LIKE '111002%'
Run Code Online (Sandbox Code Playgroud)
想法1:如何*在没有重复列的情况下进行选择(我可以手动输入)。
想法2:如何为连接中的列提供左/右前缀?
任何帮助表示赞赏。
我得到了每月时间跟踪预订的数据。由于周末和国定假日都没有预订,因此数据丢失了几天。现在我正在扩展数据,使其包括该月的所有天数,但仅包含空数据。这是我解决它的方法。我想知道是否有更优雅的方式来实现同样的事情?
为列索引的示例输入数据start:
+---------------------+--------+-------+----------+-----------------+---------+
| start | from | to | paused | hours_working | error |
|---------------------+--------+-------+----------+-----------------+---------|
| 2019-11-04 00:00:00 | 08:30 | 18:00 | 00:30 | 9 | 0 |
| 2019-11-05 00:00:00 | 09:30 | 19:00 | 00:30 | 9 | 0 |
| 2019-11-06 00:00:00 | 09:00 | 18:00 | 01:00 | 8 | 0 |
+---------------------+--------+-------+----------+-----------------+---------+
Run Code Online (Sandbox Code Playgroud)
然后我检索第一个时间戳,然后我用它来为整个月创建一个周期/索引:
# get first day of the month
first_timestamp = df.index[0].replace(day=1).strftime("%Y-%m-%d")
# build an index containing all days …Run Code Online (Sandbox Code Playgroud) 我在这个主题上找到了不同的帖子,但我找不到合适的解决方案,也无法理解代码.无论如何,我确实有一个数组,其工作方式类似于具有列和行的非平方矩阵.从那个数组我想稍后检索列数和行数.
this.myArray = new AreaTuple[cols][rows];
Run Code Online (Sandbox Code Playgroud)
但是怎么样?我知道这在C#中是如何工作的,但在Java中却不行.
我有一个包含许多键/值列的数据框,而键和值是分隔的列.
import pandas as pd
values = [['John', 'somekey1', 'somevalue1', 'somekey2', 'somevalue2']]
df = pd.DataFrame(values, columns=['name', 'key1', 'value1', 'key2', 'value2'])
Run Code Online (Sandbox Code Playgroud)
备注:原始数据将包含更多前面的列,而不仅仅是名称.它不仅仅包含两个键/值列.
我想要实现的是这样的结果:
values = [
['John', 'somekey1', 'somevalue1'],
['John', 'somekey2', 'somevalue2']
]
df = pd.DataFrame(values, columns=['name', 'key', 'value'])
Run Code Online (Sandbox Code Playgroud)
在那里,我想将所有键/值列连接到列表或字典中,而不是爆炸该列表/字典.我在pd.melt上找到了这个不错的帖子,但我的问题是,我不知道确切的id_var列在前面.因此我尝试了pd.Series.stack,它为键/值列提供了正确的结果,但是缺少原始数据中的其他列.任何的想法?这是我试过的:
# generates: [(somekey1, somevalue1), (somekey2, somevalue2)]
df['pairs'] = df.apply(lambda row: [(row['key1'],row['value1']), (row['key2'], row['value2'])], axis=1)
# unstacks the list, but drops all other columns
df['pairs'].apply(pd.Series).stack().reset_index(drop=True).to_frame('pairs')
Run Code Online (Sandbox Code Playgroud)