我有一个如下所示的数据框
f = pd.DataFrame({'person_id': [101,101,101,201,201,201,203],
'test_id':[123,123,124,321,321,321,456],
'los_24':[0.3,0.7,0.6,1.01,2,1,2],
'los_48':[1,0.2,0.4,0.7,11,2,3],
'in_24':[21,24,0.3,2.3,0.8,23,1.001],
'in_48':[11.3,202.0,0.2,0.3,41.0,47,2],
'test':['A','B','C','D','E','F','G']})
Run Code Online (Sandbox Code Playgroud)
我想更换 all values less than 1 with value 1 under columns like los_24,los_48,in_24,in_48
我尝试了以下
f['los_24'] = np.where((f.los_24 < 1.0),1,f.los_24)
f['los_48'] = np.where((f.los_48 < 1.0),1,f.los_48)
f['in_24'] = np.where((f.in_24 < 1.0),1,f.in_24)
f['in_48'] = np.where((f.in_48 < 1.0),1,f.in_48)
Run Code Online (Sandbox Code Playgroud)
但是您可以看到我使用不同的列名多次编写同一行代码。
在实际数据中,我有 10 多列来替换值。那么,还有其他有效而优雅的方式来写这个吗?
我希望我的输出如下所示
我正在尝试使用ExceptBigquery 中的现有子句。请在下面找到我的查询
select * EXCEPT (b.hosp_id, b.person_id,c.hosp_id) from
person a
inner join hospital b
on a.hosp_id= b.hosp_id
inner join reading c
on a.hosp_id= c.hosp_id
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用了 3 个表。所有 3 个表都有hosp_id列,所以我想删除重复的列,即b.hosp_id和c.hosp_id。同样,我也想删除b.person_id列。
当我执行上述查询时,出现如下所示的语法错误
Syntax error: Expected ")" or "," but got "." at [9:19]
Run Code Online (Sandbox Code Playgroud)
请注意,我在 inExcept子句中使用的所有列都存在于所使用的表中。附加信息是所有使用的表都是使用with子句创建的临时表。当我通过选择感兴趣的列手动执行相同操作时,它工作正常。但是我有几列,无法手动执行此操作。
你能帮我吗?我正在尝试学习 Bigquery。您的意见会有所帮助
我已经提到了这个相关的帖子
我目前在我的服务器(我没有 sudo 访问权限)中使用 jupyter 笔记本,它有python 2.7 kernel.
但是,我想添加Python >= 3.5为内核。所以,我使用的是按照教程安装Pyenv.
安装成功,我在 jupyter notebook 中收到以下消息
WARNING: seems you still have not added 'pyenv' to the load path.
# Load pyenv automatically by adding
# the following to ~/.bashrc:
export PATH="/home/abcd/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Run Code Online (Sandbox Code Playgroud)
后来,当我尝试执行以下命令时,出现如下所示的错误
!pyenv install --list | grep " 3\.[678]"
Run Code Online (Sandbox Code Playgroud)
请注意,我在!从Jupyter notebook单元格执行它时使用了符号
/bin/sh: 1: pyenv: 未找到
如何避免此错误并使 pyenv 工作并产生以下输出
我有一个如下所示的数据框
data = pd.DataFrame({'day':['1','21','41','61','81','101','121','141','161','181','201','221'],'Sale':[1.08,0.9,0.72,0.58,0.48,0.42,0.37,0.33,0.26,0.24,0.22,0.11]})
Run Code Online (Sandbox Code Playgroud)
我想day 241通过计算所有记录的平均值来填充值,直到day 221. 同样,我想day 261通过计算所有记录的平均值直到day 241等等来计算值。
例如:day n通过取所有值的平均值来计算 的值day 1 to day n-21。
我想这样做day 1001。
我尝试了以下但不正确
df['day'] = df.iloc[:,1].rolling(window=all).mean()
Run Code Online (Sandbox Code Playgroud)
如何为列下的每一天创建新行day?
我希望我的输出如下所示
我有一个如下所示的数据框
df = pd.DataFrame({'text': ["Hi how","I am fine","Ila say Hi","hello"],
'tokens':["test","correct","Tim",np.nan],
'labels':['A','B','C','D']})
Run Code Online (Sandbox Code Playgroud)
而不是多个 np.where 条件,我想使用Oror|运算符来检查条件中的多个值,np.where如下所示
df['labels'] = np.where(df['tokens'] == ('test'|'correct'|is.na()),'new_label',df['labels'])
Run Code Online (Sandbox Code Playgroud)
但是,这会导致错误
类型错误:不支持 | 的操作数类型:'str' 和 'str'
我希望我的输出如下所示。对于具有数百万条记录的大数据,我如何有效地做到这一点?
我正在尝试使用以下命令启动一个闪亮的应用程序。
Rscript -e "shiny::runApp('test-app', launch.browser=TRUE)"
Run Code Online (Sandbox Code Playgroud)
但是,我收到如下错误
Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) :
namespace 'htmltools' 0.4.0 is being loaded, but >= 0.4.0.9003 is required
Calls: :: ... getNamespace -> loadNamespace -> namespaceImport -> loadNamespace
Execution halted
Run Code Online (Sandbox Code Playgroud)
我确实检查了我的库文件夹并看到该htmltools包存在。
我也尝试过以下dependencies=TRUE
install.packages(pkgs,lib = "C:/Users/User/Desktop/data/library",repo = "https://cloud.r-project.org",dependencies=TRUE)
Run Code Online (Sandbox Code Playgroud)
这里的 pkgs 是一个包含必须安装的软件包列表的列表。
问题是相同的脚本在我的系统中工作,但在我同事的系统中不起作用。我该如何解决这个问题?
可以帮助我了解问题所在吗?
我有一个如下所示的数据框
identifier shift_back_max shift_forward_max
<chr> <dbl> <dbl>
1 11 -140 0
2 12 -63 149
3 13 -37 327
4 14 0 193
5 16 -Inf Inf
6 17 -Inf Inf
7 18 -Inf Inf
8 19 -Inf Inf
Run Code Online (Sandbox Code Playgroud)
我正在尝试替换-inf为-30和Inf。30
我尝试了以下情况。请注意,此案例是大型 dplyr 链的一部分。但只有这一行会引发错误。所以,我在这里为一栏提供它
mutate(shift_back_max= case_when(
(!is.na(shift_back_max)|!is.infinite(shift_back_max) ~'-30',
TRUE ~ shift_back_max))
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误消息
Error: Problem with `mutate()` input `shift_back_max`.
x 'from' must be a finite number
i Input `shift_back_max` is `case_when(...)`.
i The error occurred …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框
df = pd.DataFrame({'person_id': [101,101,101,101],
'sourcename':['test1','test2','test3','test4'],
'Test':[np.nan,np.nan,'B5','B6']})
Run Code Online (Sandbox Code Playgroud)
我希望做的就是复制non-na从行Test列,并将其粘贴到相应的下排sourcename列
当我尝试以下时,它使sourcename列的其他行成为NA
df['sourcename'] = df.loc[df['Test'].notna()]['Test']
Run Code Online (Sandbox Code Playgroud)
我希望我的输出如下所示
我分别在两个 jupyter 笔记本(N1 和 N2)中创建了两个数据帧(df1 和 df2)。
第一天,我使用下面的 store 命令在jupyter 笔记本中使用df1及其变量N2
%store -r df1
Run Code Online (Sandbox Code Playgroud)
但在第 25 天,我创建了一个新的 jupyter 笔记本N3并再次使用以下存储命令
%store -r df1
Run Code Online (Sandbox Code Playgroud)
而且它似乎很容易将数据帧的所有细节轻松地拉入jupyter笔记本df1中?N3
这是如何运作的?
它们不是仅对特定的 jupyter 笔记本会话有效吗?
那么我们是否可以只执行存储命令并随时轻松存储/检索它们,而不是将所有数据帧存储为文件?
我有一个如下所示的数据框
app_date
20/3/2017
28/8/2017
18/10/2017
15/2/2017
2/5/2017
11/9/2016
df = pd.read_clipboard()
Run Code Online (Sandbox Code Playgroud)
我们公司的会计年度是从October当年到September明年
Q1 - Oct to Dec
Q2 - Jan to Mar
Q3 - Apr to Jun
Q4 - July - Sep
Run Code Online (Sandbox Code Playgroud)
我正在尝试类似下面的东西
tf['app_date'] = pd.to_datetime(tf['app_date'])
tf['act_month'] = pd.DatetimeIndex(tf['app_date']).month
tf['act_year'] = pd.DatetimeIndex(tf['app_date']).year
tf['act_qtr'] = tf['app_date'].dt.to_period('Q').dt.strftime('Q%q')
tf['comp_fis_year'] = np.where(tf['act_month'] >= 9,tf['act_year']+1,tf['act_year'])
tf['comp_fis_qtr'] = tf['app_date'].dt.to_period('Q').add(1).dt.strftime('Q%q') #thanks to jezrael for this trick to get quarter
Run Code Online (Sandbox Code Playgroud)
有没有优雅且有效的方法来完成上述操作?主要是根据我们的财政年度来计算财政年度(Oct to Sep)?
我希望我的输出如下所示