tidyr::unnestR 语言中的方法与 Pandas 中的等效方法相同explode,如此非常详细的答案中所述。我想知道是否有等效于 ?tidyr::nest` 的方法。
示例 R 代码:
library(tidyr)
iris_nested <- as_tibble(iris) %>% nest(data=-Species)
Run Code Online (Sandbox Code Playgroud)
数据列是一个列表列,其中包含数据框(这对于建模非常有用,例如在运行多个模型时)。
iris_nested
# A tibble: 3 x 2
Species data
<fct> <list<df[,4]>>
1 setosa [50 × 4]
2 versicolor [50 × 4]
3 virginica [50 × 4]
Run Code Online (Sandbox Code Playgroud)
要访问数据列中的一个元素:
iris_nested[1,'data'][[1]]
[...]
# A tibble: 50 x 4
Sepal.Length Sepal.Width Petal.Length Petal.Width
<dbl> <dbl> <dbl> <dbl>
1 5.1 3.5 1.4 0.2
2 4.9 3 1.4 0.2
3 4.7 3.2 1.3 0.2
4 …Run Code Online (Sandbox Code Playgroud) pandas中的操作是否与pyspark中的flatMap相同?
flatMap示例:
>>> rdd = sc.parallelize([2, 3, 4])
>>> sorted(rdd.flatMap(lambda x: range(1, x)).collect())
[1, 1, 1, 2, 2, 3]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我可以想到apply其次itertools.chain,但我想知道是否有一步到位的解决方案.
我有一个关于将数据帧列中的列表拆分为多行的问题.
假设我有这个数据帧:
Job position Job type id
0 [6] [1] 3
1 [2, 6] [3, 6, 5] 4
2 [1] [9] 43
Run Code Online (Sandbox Code Playgroud)
我想要每一个数字组合,所以最终的结果是:
id Job position Job type
0 3 6.0 1.0
1 4 2.0 3.0
2 4 2.0 6.0
3 4 2.0 5.0
4 4 6.0 3.0
5 4 6.0 6.0
6 4 6.0 5.0
7 43 1.0 9.0
Run Code Online (Sandbox Code Playgroud)
因为现在我得到这个结果:
id Job position Job type
0 3 6.0 1.0
1 4 2.0 3.0
2 4 6.0 6.0
3 4 …Run Code Online (Sandbox Code Playgroud) I have the following Pandas dataframe:
1 ["Apple", "Banana"]
2 ["Kiwi"]
3 None
4 ["Apple"]
5 ["Banana", "Kiwi"]
Run Code Online (Sandbox Code Playgroud)
and the following dict:
{1: ["Apple", "Banana"],
2: ["Kiwi"]}
Run Code Online (Sandbox Code Playgroud)
I would now like to map all the entries in the lists in my dataframe using the dictionary. The result should be the following:
1 [1]
2 [2]
3 None
4 [1]
5 [1, 2]
Run Code Online (Sandbox Code Playgroud)
How can this be done most efficiently?
我正在将多个JSON对象读入一个DataFrame.问题是某些列是列表.此外,数据非常大,因此我不能使用互联网上的可用解决方案.它们非常慢并且内存效率低
以下是我的数据的样子:
df = pd.DataFrame({'A': ['x1','x2','x3', 'x4'], 'B':[['v1','v2'],['v3','v4'],['v5','v6'],['v7','v8']], 'C':[['c1','c2'],['c3','c4'],['c5','c6'],['c7','c8']],'D':[['d1','d2'],['d3','d4'],['d5','d6'],['d7','d8']], 'E':[['e1','e2'],['e3','e4'],['e5','e6'],['e7','e8']]})
A B C D E
0 x1 [v1, v2] [c1, c2] [d1, d2] [e1, e2]
1 x2 [v3, v4] [c3, c4] [d3, d4] [e3, e4]
2 x3 [v5, v6] [c5, c6] [d5, d6] [e5, e6]
3 x4 [v7, v8] [c7, c8] [d7, d8] [e7, e8]
Run Code Online (Sandbox Code Playgroud)
这是我的数据形状:(441079,12)
我想要的输出是:
A B C D E
0 x1 v1 c1 d1 e1
0 x1 v2 c2 d2 e2
1 x2 v3 c3 d3 e3 …Run Code Online (Sandbox Code Playgroud) 我有一个DataFrame,其中包含每列的列表,如下例所示,只有两列.
Gamma Beta
0 [1.4652917656926299, 0.9326935235505321, float] [91, 48.611034768515864, int]
1 [2.6008354611105995, 0.7608529935313189, float] [59, 42.38646954167245, int]
2 [2.6386970166722348, 0.9785848171888037, float] [89, 37.9011122659478, int]
3 [3.49336632573625, 1.0411524946972244, float] [115, 36.211134224288344, int]
4 [2.193991200007534, 0.7955134305428825, float] [128, 50.03563864975485, int]
5 [3.4574527664490997, 0.9399880977511021, float] [120, 41.841146628802875, int]
6 [3.1190582380554863, 1.0839109431114795, float] [148, 55.990072419824514, int]
7 [2.7757359940789916, 0.8889801332053203, float] [142, 51.08885697101243, int]
8 [3.23820908493237, 1.0587479742892683, float] [183, 43.831293356668425, int]
9 [2.2509032790941985, 0.8896196407231622, float] [66, 35.9377662201882, int]
Run Code Online (Sandbox Code Playgroud)
我想为每一列提取每行列表的第一个位置,以获得如下的DataFrame.
Gamma Beta
0 1.4652917656926299 91
1 …Run Code Online (Sandbox Code Playgroud) 我有两个 DataFrame,其中一个包含一列,其单元格内包含列表。这是一个例子:
DF 1 :
| A B
---+----------------------------
0 | 'A' ['A', 'B']
1 | 'B' ['B', 'D']
2 | 'C' ['D', 'E', 'F']
DF 2 :
| C D
---+----------------------------
0 | 'A' 'X'
1 | 'B' 'Y'
2 | 'C' 'Z'
Run Code Online (Sandbox Code Playgroud)
这是设置 DataFrame 的代码:
df1 = pd.DataFrame({'A': ["A", "B", "C"], "B": [["A", "B"], ["B", "D"], ["D", "E", "F"]]})
df2 = pd.DataFrame({'C': ["A", "B", "C"], "D": ["X", "Y", "Z"]})
Run Code Online (Sandbox Code Playgroud)
我想用条件在 DF1 和 DF2 之间进行内部联接DF2.C in DF1.B,这是我期望的结果: …
我想将存储为两列(开始、结束)+值的日期范围转换为仅包含日期和值的两个新列。
\n\n我的数据:
\n\n id end start value\n1 4421 2014-01-01 2014-01-03 10\n2 4421 2014-01-04 2014-01-04 500\n3 4421 2014-01-05 2014-01-07 20\n4 5560 2014-01-02 2014-01-03 100\n5 5560 2014-01-04 2014-01-04 600\nRun Code Online (Sandbox Code Playgroud)\n\n我想要的是:
\n\n Date id value\n0 2014-01-01 4421 10\n1 2014-01-02 4421 10\n2 2014-01-03 4421 10\n3 2014-01-04 4421 500\n4 2014-01-05 4421 20\n5 2014-01-06 4421 20\n6 2014-01-07 4421 20\n7 2014-01-01 5560 NA\n8 2014-01-02 5560 100\n9 2014-01-03 5560 100\n10 2014-01-04 5560 600\nRun Code Online (Sandbox Code Playgroud)\n\nI\xe2\x80\x99m 使用 dplyr,所以我可以与 mutate 和管道等一起使用的东西会很有用。
\n\n样本数据:
\n\nid <- c(4421, 4421, …Run Code Online (Sandbox Code Playgroud) 假设我有一个 pandas 数据框,例如
df_p = pd.DataFrame(
{'name_array':
[[20130101, 320903902, 239032902],
[20130101, 3253453, 239032902],
[65756, 4342452, 32425432523]],
'name': ['a', 'a', 'c']} )
Run Code Online (Sandbox Code Playgroud)
我想提取包含每行中的展平数组的系列,同时保留顺序
预期结果是pandas.core.series.Series
这个问题不是重复的,因为我的预期输出是 pandas 系列,而不是数据框。