小编lla*_*fin的帖子

将Pandas列内的字典/列表拆分为单独的列

我将数据保存在postgreSQL数据库中.我使用Python2.7查询这些数据并将其转换为Pandas DataFrame.但是,此数据框的最后一列中包含值的字典(或列表?).DataFrame看起来像这样:

[1] df
Station ID     Pollutants
8809           {"a": "46", "b": "3", "c": "12"}
8810           {"a": "36", "b": "5", "c": "8"}
8811           {"b": "2", "c": "7"}
8812           {"c": "11"}
8813           {"a": "82", "c": "15"}
Run Code Online (Sandbox Code Playgroud)

我需要将此列拆分为单独的列,以便DataFrame如下所示:

[2] df2
Station ID     a      b       c
8809           46     3       12
8810           36     5       8
8811           NaN    2       7
8812           NaN    NaN     11
8813           82     NaN     15
Run Code Online (Sandbox Code Playgroud)

我遇到的主要问题是列表的长度不同.但是所有列表只包含相同的3个值:a,b和c.它们总是以相同的顺序出现(第一个,第二个,第三个).

以下代码用于工作并返回我想要的内容(df2).

[3] df 
[4] objs = [df, pandas.DataFrame(df['Pollutant Levels'].tolist()).iloc[:, :3]]
[5] df2 = pandas.concat(objs, axis=1).drop('Pollutant Levels', axis=1) …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas

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

嵌套列表:将其排序为数据帧

我有一个嵌套列表列表.每个嵌套列表的长度都不同.列表中的每个值都有一个分配给它的名称.我想从列表中创建一个数据框,但是对列表进行排序,以便每个值都在数据框中的正确列中.

用英语解释很难,我希望这个示例代码能够解释:

list <- list(1,1:2,1:3)
names(list[[1]]) <- "a"
names(list[[2]]) <- c("c", "a")
names(list[[3]]) <- c("a","c","b")

table <- matrix(NA, nrow = 3, ncol = 3)
colnames(table) <- c("a","b","c")  

> list
[[1]]
a 
1 

[[2]]
c a 
1 2 

[[3]]
a c b 
1 2 3 

> table
      a  b  c
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA  
Run Code Online (Sandbox Code Playgroud)

我想将列表排序到表中,如下所示:

>table
          a  b  c
list[[1]] 1 NA NA
list[[2]] 2 NA  1
list[[3]] 1  3  2
Run Code Online (Sandbox Code Playgroud)

以便列表中值的名称与表中列的名称匹配,然后list[[1]] …

r function list dataframe

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

标签 统计

dataframe ×2

dictionary ×1

function ×1

list ×1

pandas ×1

python ×1

r ×1