我有一个带有两列的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) 我在全局环境中有10个数据框 - 5个具有名称模式,另外5个具有另一个命名模式.我想将具有相同命名模式的数据帧放入每个列表中(两个列表 - 每个模式一个),因此最终我可以使用以下方式对每个列表运行检查lapply
:
lapply(listofdataframes, function(x) range(x[ , "date"]))`
Run Code Online (Sandbox Code Playgroud)
命名模式是这样- :Pattern 1
,,q32013local
等.q42013local
q12014local
Pattern 2
:q32013national
,q42013national
等等.
我以前用过这个:
Filter(function(x) is(x, "data.frame"), mget(ls()))`
Run Code Online (Sandbox Code Playgroud)
但它显然列出了全球环境中的所有数据框.
我一直在寻找如何使用grep
和ls
一起使用.我bash
在SO上找到了相同的问题这里列出了带有ls和grep但没有R等价的扩展名的文件.我确实提到了这两个相关的问题,但它们完全不同:
我有一个数据帧两列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 …
我有json
包含国家数据的文件.其中一个文件包含以下数据:
"[{\"count\":1,\"subject\":{\"name\":\"Namibia\",\"alpha2\":\"NA\"}}]"
Run Code Online (Sandbox Code Playgroud)
我将以下代码转换json
为data.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)
相反,NA
alpha2代码会自动转换为NA
逻辑,这就是我得到的:
str(df)
$ count : int 1
$ subject.name : chr "Namibia"
$ subject.alpha2: logi NA
Run Code Online (Sandbox Code Playgroud)
我希望alpha2是一个字符串,而不是逻辑.我该如何解决?
我有一个字符串向量,看起来像:
> 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) 我有一个 59720 obs 的数据框。看起来像下面。我想为查找表中的每个观察值分配一个 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) 我有一个data.frame
100x100,我需要把它们当作自动扶梯.从第一列的第一个条目开始,然后继续将第二列的第一个条目添加到第一个条目的第二个条目,依此类推,直到最后一个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)
.
提前感谢您的帮助
我有一个带有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。
有没有办法使我的桌面上的计算速度更快?
这是一个'为什么'的问题而不是'如何'问题.
我有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对比数据框的外观相同,但输出不同.我想知道为什么?
我是 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)