我以下数据帧:
a <- c(1,1,1)
b<- c(10,8,2)
c<- c(2,2)
d<- c(3,5)
AB<- data.frame(a,b)
CD<- data.frame(c,d)
Run Code Online (Sandbox Code Playgroud)
我想加入AB和CD,其中第一列CD等于AB的第二列.请注意,我的实际数据将有不同数量的列,名称各不相同,所以我真的在寻找一种基于位置加入的方法.我一直在尝试这个:
#Get the name of the last column in AB
> colnames(AB)[ncol(AB)]
[1] "b"
#Get the name of the first column in CD
> colnames(CD)[1]
[1] "c"
Run Code Online (Sandbox Code Playgroud)
然后我尝试像这样加入:
> abcd <- full_join(AB, CD, by = c(colnames(AB)[ncol(AB)]=colnames(CD)[1]))
Error: unexpected '=' in "abcd <- full_join(AB, CD, by = c(colnames(AB)[ncol(AB)]="
Run Code Online (Sandbox Code Playgroud)
我正在寻找的行为基本上是这样的:
> abcd<- full_join(AB, CD, by = c("b" = "c"))
> abcd
a b d
1 1 10 NA …
Run Code Online (Sandbox Code Playgroud) 我有这个暗网数据,数据如下所示:origin列包含一行中的多个国家/地区.
df = pd.DataFrame({'Item': ['Weapons', 'Drugs', 'Data'], 'Origin': ['US UK AUS', 'US', 'Canada']})
Run Code Online (Sandbox Code Playgroud)
我试图将第一行转换为多行.在这种情况下,三个!
df = pd.DataFrame({'Item': ['Weapons', 'Weapons', 'Weapons','Drugs', 'Data'], 'Origin': ['US', 'UK', 'AUS', 'US', 'Canada']})
Run Code Online (Sandbox Code Playgroud)
有没有我可以使用的简单代码?
如果不是这样,我怎么能使它成为可能?
我有一个大约50列和> 100行的pandas数据帧.我想选择列'col_x'
,'col_y'
在哪里'col_z' < m
.有一个简单的方法来做到这一点,类似于df[df['col3'] < m]
和df[['colx','coly']]
,但结合起来呢?
我有一个pandas数据框,如下所示:
UNIT MACHINE
1 a100 001
2 a100 002
3 a100 003
4 a100 001
5 b222 001
6 b222 002
7 b222 002
8 b222 003
Run Code Online (Sandbox Code Playgroud)
我想基于"UNIT"对其进行分组,并删除没有[001,002,003]"MACHINE"序列的行.这意味着因为UNIT"a100"具有序列[001,002,003,001],所以它应该被丢弃,但UNIT"b222"仍然存在,因为无论MACHINE 002的重复如何,序列都是正确的.
输出应如下所示:
UNIT MACHINE
5 b222 001
6 b222 002
7 b222 002
8 b222 003
Run Code Online (Sandbox Code Playgroud)
序列[001,002,003]是我在这里作为例子编写的可接受的MACHINE序列之一.有几种这样的序列,所有这些序列都是单调递增的.
我应该如何组合GroupBy并执行此操作?
我的DF具有多索引列。我所有的值都在float中,并且我想在第一级多索引中合并值。请参阅下面的详细信息。
first bar baz foo
second one two one two one
A 0.895717 0.805244 1.206412 2.565646 1.431256
B 0.410835 0.813850 0.132003 0.827317 0.076467
C 1.413681 1.607920 1.024180 0.569605 0.875906
first bar baz foo
A (0.895717+0.805244) (1.206412+2.565646) 1.431256
B (0.410835+0.813850) (0.132003+0.827317) 0.076467
C (1.413681+1.607920) (1.024180+0.569605) 0.875906
Run Code Online (Sandbox Code Playgroud)
值实际上是添加的(我只是不想做所有这些事情:)。最重要的是,我只想升级(我猜是更高的级别),并在索引内添加所有值。请让我知道执行此操作的好方法。谢谢!
我正在DataFrames
使用XlsxWriter 将两个熊猫导出到Excel ,每个熊猫DataFrame
都有一个单独的工作表。我想根据另一张纸中的值将一种颜色格式应用于一张纸中的所有单元格,它们基于列名和行号一对一地对应。
例:
Sheet1
A B C
1 1 3 1
2 0 4 2
Sheet2
A B C
1 a d b
2 b a a
Run Code Online (Sandbox Code Playgroud)
我想为Sheet1中所有在Sheet2中具有值“ a”的单元格分配一种颜色格式。
我有以下闪亮的应用程序:
library(shiny)
library(rhandsontable)
library(shinydashboard)
library(ggplot2)
library(dplyr)
setwd("C:/Users/Marc/Dropbox/PROJECTEN/Lopend/shiny_interactive_graph")
tweets <- data.frame(
city = c("new york", "texas", "texas"),
tweet = c("Test1", "Test", "tst")
)
shinyApp(
ui = dashboardPage(
dashboardHeader(
title = "Tweetminer",
titleWidth = 350
),
dashboardSidebar(
width = 350,
sidebarMenu(
menuItem("Menu Item")
)
),
dashboardBody(
fluidRow(
tabBox(
tabPanel("Set tweets2",
plotOutput('plot',
brush = brushOpts(
id = "plot1_brush"
)),
h4("Selected States"),
verbatimTextOutput("select_states"),
h4("Selected States' Tweets"),
verbatimTextOutput("tweets")
)
)
)
)
),
server = function(input, output) {
output$plot <- renderPlot({
all_states <- map_data("state")
# …
Run Code Online (Sandbox Code Playgroud) 我一直想做下面的工作,以便有一个简单的故事,用于pandas.DataFrame.someColumnName.unique()
在一个内的每一列上执行函数pandas.DataFrame
.
df.apply(func=unique, axis=0) # error NameError: name 'unique' is not defined
Run Code Online (Sandbox Code Playgroud)
是否有一些技巧我忽略了这个工作或替代解决方案给出以下类似的东西,但type()
在pandas.DataFrame
工作中的每个列使用功能.
df.apply(func=lambda x: type(x[0]), axis=0)
Run Code Online (Sandbox Code Playgroud)
请注意,我已经能够进行以下工作,但似乎不是python中的单行for循环的方式,我发现apply语句是一个更好的自我记录实现.
for col in df.columns:
df[col].unique()
Run Code Online (Sandbox Code Playgroud) 我需要在PySpark代码中对大型数据集进行大量聚合(大约9-10).我可以通过两种方式接近它:
单一组:
df.groupBy(col1, col2).agg({"col3":"sum", "col4":"avg", "col5":"min", "col6":"sum", "col7":"max", "col8":"avg", "col9":"sum"})
Run Code Online (Sandbox Code Playgroud)
分组并加入
temp1 = df.groupBy(col1, col2).agg({"col3":"sum"})
temp2 = df.groupBy(col1, col2).agg({"col4":"avg"})
temp3 = df.groupBy(col1, col2).agg({"col5":"min"})
.
.
.
temp9 = df.groupBy(col1, col2).agg({"col9":"sum"})
Run Code Online (Sandbox Code Playgroud)
然后加入所有这9个数据帧以获得最终输出.
哪一个会更有效率?
好了,所以这里是我的想象data.frame
叫data
A1 A2 A3 A4 A5 A6
1 2 45 35 33 38
5 1 23 33 58 47
18 26 78 15 5 6
Run Code Online (Sandbox Code Playgroud)
我想要做的是选择任何列中包含1或33的所有行
所以我最初的想法是编写以下代码
a <- paste0("A",1:6)
num <- c("1","33")
data <- data %>%
filter(a %in% num)
Run Code Online (Sandbox Code Playgroud)
直觉上我虽然这会工作,但我一直得到错误结果必须有长度_不_.
我可以用任何方式绕过这个或使用不同的解决方案吗?谢谢!
dataframe ×10
pandas ×6
python ×6
r ×3
dplyr ×2
apache-spark ×1
apply ×1
conditional ×1
excel ×1
filter ×1
group-by ×1
merge ×1
modal-dialog ×1
multi-index ×1
performance ×1
pyspark ×1
shiny ×1
split ×1
string ×1
sum ×1
unique ×1
xlsxwriter ×1