小编Kei*_*itt的帖子

Pyspark:将多个数组列拆分为行

我有一个数据框,有一行和几列.一些列是单个值,其他列是列表.所有列表列的长度都相同.我想将每个列表列拆分为一个单独的行,同时保持任何非列表列不变.

样本DF:

from pyspark import Row
from pyspark.sql import SQLContext
from pyspark.sql.functions import explode

sqlc = SQLContext(sc)

df = sqlc.createDataFrame([Row(a=1, b=[1,2,3],c=[7,8,9], d='foo')])
# +---+---------+---------+---+
# |  a|        b|        c|  d|
# +---+---------+---------+---+
# |  1|[1, 2, 3]|[7, 8, 9]|foo|
# +---+---------+---------+---+
Run Code Online (Sandbox Code Playgroud)

我想要的是:

+---+---+----+------+
|  a|  b|  c |    d |
+---+---+----+------+
|  1|  1|  7 |  foo |
|  1|  2|  8 |  foo |
|  1|  3|  9 |  foo |
+---+---+----+------+
Run Code Online (Sandbox Code Playgroud)

如果我只有一个列表列,只需执行以下操作即可explode:

df_exploded = df.withColumn('b', explode('b')) …
Run Code Online (Sandbox Code Playgroud)

python dataframe apache-spark apache-spark-sql pyspark

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

在窗口调整大小时自动缩放嵌入在HTML中的SVG

我希望在HTML页面中嵌入一些SVG,以便在调整页面大小时自动调整大小(使用SVG,CSS或JS),同时仍保留原始高宽比.

例如,使用W3Schools的示例:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="100" cy="50" r="40" stroke="black"
  stroke-width="2" fill="red"/>
</svg>
Run Code Online (Sandbox Code Playgroud)

是否可以设置SVG宽度=窗口宽度的5%,并且高度按比例缩放?

我已经尝试了一些东西,包括preserveAspectRatio="xMinYMin meet"<div>容器内将尺寸设置为100%,但还没有让它工作.

有什么建议?

html css svg

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

向后兼容的输入调用Python

我想知道是否有人建议编写一个向后兼容的input()调用来检索文件路径?

在Python 2.x中,raw_input适用于像/ path/to/file这样的输入.在这种情况下,使用输入正常工作3.x,但由于eval行为而在2.x中抱怨.

一个解决方案是检查的Python和版本,基于版本,既映射inputraw_input到一个新的功能:

if sys.version_info[0] >= 3:
    get_input = input
else:
    get_input = raw_input
Run Code Online (Sandbox Code Playgroud)

我确信有更好的方法可以做到这一点.有人有什么建议吗?

python input raw-input python-3.x

24
推荐指数
2
解决办法
3165
查看次数

将具有N个类别的分类因子重新编码为N个二进制列

原始数据框:

v1 = sample(letters[1:3], 10, replace=TRUE)
v2 = sample(letters[1:3], 10, replace=TRUE)
df = data.frame(v1,v2)
df
Run Code Online (Sandbox Code Playgroud)
   v1 v2
1   b  c
2   a  a
3   c  c
4   b  a
5   c  c
6   c  b
7   a  a
8   a  b
9   a  c
10  a  b

新数据框:

new_df = data.frame(row.names=rownames(df))
for (i in colnames(df)) {
    for (x in letters[1:3]) {
        #new_df[x] = as.numeric(df[i] == x)
        new_df[paste0(i, "_", x)] = as.numeric(df[i] == x)
    }
}
Run Code Online (Sandbox Code Playgroud)
   v1_a v1_b v1_c v2_a v2_b …

r factors dataframe

17
推荐指数
2
解决办法
3万
查看次数

Python - 处理混合编码文件

我有一个主要是UTF-8的文件,但是一些Windows-1252字符也已经找到了.

我创建了一个表,从Windows-1252(cp1252)字符映射到它们的Unicode对应物,并希望用它来修复错误编码的字符,例如

cp1252_to_unicode = {
    "\x85": u'\u2026', # …
    "\x91": u'\u2018', # ‘
    "\x92": u'\u2019', # ’
    "\x93": u'\u201c', # “
    "\x94": u'\u201d', # ”
    "\x97": u'\u2014'  # —
}

for l in open('file.txt'):
    for c, u in cp1252_to_unicode.items():
        l = l.replace(c, u)
Run Code Online (Sandbox Code Playgroud)

但尝试以这种方式替换会导致引发UnicodeDecodeError,例如:

"\x85".replace("\x85", u'\u2026')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x85 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

有关如何处理这个问题的任何想法?

python unicode encoding utf-8 windows-1252

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

在R ggplot2中使用scale_x_discrete

我在使用R中的ggplot2中的离散比例时遇到问题

g + scale_x_discrete(breaks=1:7, labels=1:7)
Run Code Online (Sandbox Code Playgroud)

错误地更改了图表的限制.

之前:

之前

后: 在此输入图像描述

我看不出有什么可疑的用于生成图像的代码,但是这里是:

g <- ggplot(data=plottingData, aes(x=x, y=y, ymin=ymin, ymax=ymax)) +
geom_bar(stat="identity", fill=col) +
geom_errorbar(width=0.5*binwidth, size=0.3)
Run Code Online (Sandbox Code Playgroud)

这是dput()生成的ggplot2对象:

structure(list(data = structure(list(x = c(1, 2, 3, 4, 5, 6,  7), y = c(0.689655172413793, 0.689655172413793, 11.0344827586207,  2.75862068965517, 70.3448275862069, 13.7931034482759, 0.689655172413793 ), ymin = c(0, 0, 6.84765916431683, 0.870298113507349, 62.426550974053,  9.06894448064895, 0), ymax = c(4.26873021234759, 4.26873021234759,  17.3134146611865, 7.18339316166044, 77.1707644621886, 20.4612568616329,  4.26873021234759)), .Names = c("x", "y", "ymin", "ymax"), row.names = c(NA,  -7L), class = "data.frame"), layers = list(<environment>, …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

10
推荐指数
2
解决办法
3万
查看次数

IPython和virtualenv:忽略站点包

有没有人知道如何让IPython忽略使用--no-site-packages标志创建的virtualenv上下文中的site-packages?

virtualenv ipython

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

使用knitr布局

我想在R中用一个markdown文件中的两个图来制作一个图knitr.通常,这很容易用layout(t(1:2))par(mfrow=c(1,2)).我可以这样做knitr,还是总是分别制作两个数字?

这里是一个创建了一个名为文件的最小工作示例./junk.Rmd,并./junk.md在两个文件一起工作目录./figure/junkislands1.png(仅包括第一曲线),而./figure/junkislands2.png(它包括我想这两个地块).

require(knitr)
temp <- "```{r junkislands, fig.width=8, fig.height=5}
layout(t(1:2))
pie(islands)
barplot(islands)
```"
cat(temp, file="junk.Rmd")
knit("junk.Rmd", "junk.md")
Run Code Online (Sandbox Code Playgroud)

问题不在于它创建了两个.png文件,而是降价文件junk.md包含它们.

当我将标记降为html时,它包含两个.png文件,当我只想要绘制两个数字时.

这是junk.md从knitr生成的文件:

```r
par(mfrow = c(1, 2))
pie(islands)
```

![plot of chunk junkislands](figure/junkislands1.png) 

```r
barplot(islands)
```

![plot of chunk junkislands](figure/junkislands2.png) 
Run Code Online (Sandbox Code Playgroud)

markdown r knitr

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

Rmarkdown 术语表

我有一个简单的问题。我如何使用 Rmarkdown /knitr 创建术语表。我使用 RStudio 工作。

我尝试这个但没有成功

\usepackage{glossaries}
Run Code Online (Sandbox Code Playgroud)

在 header.tex 和 rmd 文件中

Glossary
--------

\makeglossaries

\newglossaryentry{score_r1_ch1}
{
name=zscore,
description={ description here}
}
\printglossaries
Run Code Online (Sandbox Code Playgroud)

谢谢

glossary r knitr r-markdown

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

最小化Python中两组点之间的总距离

给定n维空间中的两组点,一个映射点如何从一组映射到另一组,以使每个点仅使用一次,并且使成对的点之间的欧式距离最小化?

例如,

import matplotlib.pyplot as plt
import numpy as np

# create six points in 2d space; the first three belong to set "A" and the
# second three belong to set "B"
x = [1, 2, 3, 1.8, 1.9, 3.4]
y = [2, 3, 1, 2.6, 3.4, 0.4]

colors = ['red'] * 3 + ['blue'] * 3

plt.scatter(x, y, c=colors)
plt.show()
Run Code Online (Sandbox Code Playgroud)

点距离最小化问题的示例

因此,在上面的示例中,目标是将每个红点映射到一个蓝点,以使每个蓝点仅使用一次,并且使两点之间的距离之和最小。

我碰上了这个问题,这有助于解决问题的第一部分-计算所有对点之间的距离跨越使用集scipy.spatial.distance.cdist()功能。

从那里,我可能可以测试每一行中单个元素的每个排列,并找到最小值。

我想到的应用程序涉及3维空间中相当少量的数据点,因此蛮力方法可能很好,但是我想我先检查一下是否有人知道一种更有效或更优雅的解决方案。

python scipy euclidean-distance

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