小编vag*_*ond的帖子

pandas将两列与空值组合在一起

我有一个带有两列的df,我想要将两个列组合在一起,忽略NaN值.问题是,有时两列都有NaN值,在这种情况下我希望新列也有NaN.这是一个例子:

df = pd.DataFrame({'foodstuff':['apple-martini', 'apple-pie', None, None, None], 'type':[None, None, 'strawberry-tart', 'dessert', None]})

df
Out[10]:
foodstuff   type
0   apple-martini   None
1   apple-pie   None
2   None    strawberry-tart
3   None    dessert
4   None    None
Run Code Online (Sandbox Code Playgroud)

我试着用fillna它来解决这个问题:

df['foodstuff'].fillna('') + df['type'].fillna('')
Run Code Online (Sandbox Code Playgroud)

我得到了:

0      apple-martini
1          apple-pie
2    strawberry-tart
3            dessert
4                   
dtype: object
Run Code Online (Sandbox Code Playgroud)

第4行已成为空白值.在这种情况下我不想要的是NaN值,因为两个组合列都是NaN.

0      apple-martini
1          apple-pie
2    strawberry-tart
3            dessert
4            None       
dtype: object
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas nonetype

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

在匹配特定字符串模式的全局环境中创建对象列表

我在全局环境中有10个数据框 - 5个具有名称模式,另外5个具有另一个命名模式.我想将具有相同命名模式的数据帧放入每个列表中(两个列表 - 每个模式一个),因此最终我可以使用以下方式对每个列表运行检查lapply:

 lapply(listofdataframes, function(x) range(x[ , "date"]))`
Run Code Online (Sandbox Code Playgroud)

命名模式是这样- :Pattern 1,,q32013local 等.q42013localq12014local

Pattern 2:q32013national,q42013national等等.

我以前用过这个:

 Filter(function(x) is(x, "data.frame"), mget(ls()))` 
Run Code Online (Sandbox Code Playgroud)

但它显然列出了全球环境中的所有数据框.

我一直在寻找如何使用grepls一起使用.我bash在SO上找到了相同的问题这里列出了带有ls和grep但没有R等价的扩展名的文件.我确实提到了这两个相关的问题,但它们完全不同:

将列表元素作为独立对象返回到全局环境中,如何列出全局环境中的所有数据帧?

regex grep ls r list

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

完全相同的文本字符串不匹配

我有一个数据帧两列title,并store包含文本字符串由我希望子集数据框:

In [84]:
    2631              coffee?mate sugar free french ...  jet.com
    2633            nestle coffeemate natural bliss ...  jet.com
    2634         coffee?mate liquid coffee creamer, ...  jet.com
    3085                       coffee?mate hazelnut ...  jet.com
Run Code Online (Sandbox Code Playgroud)

当我尝试:

df[(df.title.str.contains('coffee-mate')) & (df.store.str.contains('jet.com'))]
Run Code Online (Sandbox Code Playgroud)

我明白了:

Out[84]: 
Empty DataFrame
Columns: [title, store]
Index: []
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时:

df[(df.title.str.contains('coffee')) & (df.store.str.contains('jet.com'))]
Run Code Online (Sandbox Code Playgroud)

我明白了:

    2631              coffee?mate sugar free french ...  jet.com
    2633            nestle coffeemate natural bliss ...  jet.com
    2634         coffee?mate liquid coffee creamer, ...  jet.com
    3085                       coffee?mate hazelnut ...  jet.com
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做!

我试着复制角色'咖啡伴侣'进行等效测试并得到False …

python string character-encoding dataframe pandas

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

JSON文件中的"NA"转换为NA逻辑

我有json包含国家数据的文件.其中一个文件包含以下数据:

"[{\"count\":1,\"subject\":{\"name\":\"Namibia\",\"alpha2\":\"NA\"}}]"
Run Code Online (Sandbox Code Playgroud)

我将以下代码转换jsondata.frame使用jsonlite包:

df = as.data.frame(fromJSON(jsonfile), flatten=TRUE)) 
Run Code Online (Sandbox Code Playgroud)

我期待一个data.frame数字和字符串:

count subject.name subject.alpha2
1      Namibia             "NA"
Run Code Online (Sandbox Code Playgroud)

相反,NAalpha2代码会自动转换为NA逻辑,这就是我得到的:

str(df)
$ count         : int 1
$ subject.name  : chr "Namibia"
$ subject.alpha2: logi NA
Run Code Online (Sandbox Code Playgroud)

我希望alpha2是一个字符串,而不是逻辑.我该如何解决?

json r dataframe jsonlite

6
推荐指数
1
解决办法
452
查看次数

在r中改变字符串中单词的位置

我有一个字符串向量,看起来像:

> string_vec
 [1] "XXX"                     "Snakes On A Plane"       "Mask of the Ninja"       "Ruslan"                 
 [5] "Kill Switch"             "Buddy Holly Story, The"  "Believers, The"          "Closet, The"            
 [9] "Eyes of Tammy Faye, The" "Gymnast, The"            "Hunger, The" 
Run Code Online (Sandbox Code Playgroud)

最后有一些名称包含",The".我想删除逗号和空格,并在所有其他文本之前移动"The".

例如:"Buddy Holly Story,The"成为"The Buddy Holly Story".

使用模式隔离记录很简单:

string_vec[grepl("[Aa-zZ]+, The", string_vec) == TRUE]
Run Code Online (Sandbox Code Playgroud)

我现在该如何调整位置?

数据

string_vec <- c("XXX", "Snakes On A Plane", "Mask of the Ninja", 
"Ruslan", 
"Kill Switch", "Buddy Holly Story, The", "Believers, The", 
"Closet, The", 
"Eyes of Tammy Faye, The", "Gymnast, The", "Hunger, …
Run Code Online (Sandbox Code Playgroud)

regex string r

6
推荐指数
1
解决办法
932
查看次数

在 r 中合并数据框和查找表,保留数据框中的所有记录

我有一个 59720 ob​​s 的数据框。看起来像下面。我想为查找表中的每个观察值分配一个 MARKETNAME。

> data (a)

     DAY  HOUR LEAD Row.Count     DATE    ITIME  HOMEPHONE            CITY  STATE ZIPCODE     ZONENAME
1 Monday 13:00    1      9430 7/1/2013 13:42:51            FORT LAUDERDALE     FL  33315       68
2 Monday 13:00    1      9432 7/1/2013 13:43:50 xxxxx9802x  PLEASANT GROVE     AL  35127       82
3 Monday 13:00    1      9434 7/1/2013 13:46:18 5xxxx85x10      ORO VALLEY     AZ  85737       54
4 Monday  0:00    1      9435 7/1/2013  0:04:34 50xxxx1x364          SPOKANE    WA  99204      211
5 Monday 11:00    1      9436 7/1/2013 11:45:43 951xxxxx20        RIVERSIDE    CA  92507 …
Run Code Online (Sandbox Code Playgroud)

merge r vlookup dataframe

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

以递增方式的数据帧的独立行的总和

我有一个data.frame100x100,我需要把它们当作自动扶梯.从第一列的第一个条目开始,然后继续将第二列的第一个条目添加到第一个条目的第二个条目,依此类推,直到最后一个sum的条目是最后一列的最后一行.把它看作对角矩阵如

d3 <- data.frame(a = c(rep(0.5,5),0,0), b = c(0,rep(0.3,5),0), e = c(0,0,rep(0.8,5)))
Run Code Online (Sandbox Code Playgroud)

可能有助于理解这个问题.我想总结像矩阵的行d3.

我试图创建一个小例子,但我无法创建一个简化作业的循环或函数.

我有这些数据:

d <- data.frame(a = rep(0.5,5), b = rep(0.3,5), e = rep(0.8,5))
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来创建一个带有条目的矢量:

d2 <- rep(NA)
d2[1] <- d$a[1]
d2[2] <- sum(d$a[2],d$b[1])
d2[3] <- sum(d$a[3],d$b[2],d$e[1])
d2[4] <- sum(d$a[4],d$b[3],d$e[2])
d2[5] <- sum(d$a[5],d$b[4],d$e[3])
d2[6] <- sum(d$b[5],d$e[4])
d2[7] <- d$e[5]
Run Code Online (Sandbox Code Playgroud)

等于c(0.5, 0.8, 1.6, 1.6, 1.6, 1.1, 0.8).

提前感谢您的帮助

r matrix

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

加快R中的相关矩阵计算

我有一个带有49个变量和4M行的数据框。我想计算49 x 49的相关矩阵。所有列都是类数字。

这是一个示例:

df <- data.frame(replicate(49,sample(0:50,4000000,rep=TRUE)))
Run Code Online (Sandbox Code Playgroud)

我使用了标准cor功能。

cor_matrix <- cor(df, use = "pairwise.complete.obs")
Run Code Online (Sandbox Code Playgroud)

这需要很长时间。我有16GB RAM和一个i5单核2.60Ghz。

有没有办法使我的桌面上的计算速度更快?

r correlation

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

为什么从数据帧和tibble对列进行子集化会产生不同的结果

这是一个'为什么'的问题而不是'如何'问题.

我有tibble一个聚合的结果dplyr

> str(urls)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   144 obs. of  4 variables:
 $ BRAND       : chr  "Bobbi Brown" "Calvin Klein" "Chanel" "Clarins" ...
 $ WEBSITE     : chr  "http://www.bobbibrowncosmetics.com/" "http://www.calvinklein.com/shop/en/ck" "http://www.chanel.com/en_US/" "http://www.clarinsusa.com/" ...
 $ domain      : chr  "bobbibrowncosmetics.com/" "calvinklein.com/shop/en/ck" "chanel.com/en_US/" "clarinsusa.com/" ...
 $ final_domain: chr  "bobbibrowncosmetics.com/" "calvinklein.com/shop/en/ck" "chanel.com/en_US/" "clarinsusa.com/" ...
Run Code Online (Sandbox Code Playgroud)

当我尝试将final_domain列提取为字符向量时,会发生以下情况:

> length(as.character(urls[ ,4]))
[1] 1
Run Code Online (Sandbox Code Playgroud)

当我改为强制数据框然后执行它时,我得到了我真正想要的东西:

> length(as.character(as.data.frame(urls)[ ,4]))
[1] 144
Run Code Online (Sandbox Code Playgroud)

str该tibble对比数据框的外观相同,但输出不同.我想知道为什么?

r subset dataframe dplyr

5
推荐指数
2
解决办法
2652
查看次数

R 中的 lm 与 Python 中的 statsmodel OLS 的不同结果

我是 Python 新手,并且是 R 用户。当我在 R 中构建它与在 iPython 中执行相同的事情时,我从一个简单的回归模型中得到非常不同的结果。

R 平方、P 值、系数的重要性 - 没有匹配项。我是读错了输出还是犯了其他一些基本错误?

以下是我的代码和结果:

代码

str(df_nv)
Classes 'tbl_df', 'tbl' and 'data.frame':   81 obs. of  2 variables:
 $ Dependent Variabls       : num  733 627 405 353 434 556 381 558 612 901 ...
 $ Independent Variable: num  0.193 0.167 0.169 0.14 0.145 ...


summary(lm(`Dependent Variable` ~ `Independent Variable`, data = df_nv))

Call:
    lm(formula = `Dependent Variable` ~ `Independent Variable`, data = df_nv)


Residuals:
    Min      1Q  Median      3Q     Max …
Run Code Online (Sandbox Code Playgroud)

python r machine-learning lm statsmodels

4
推荐指数
1
解决办法
3072
查看次数