df是一个pandas数据框。该列df["Date"]是日期时间字段。
test_date = df.loc[300, "Date"] # Timestamp('2019-02-12 00:00:00')
Run Code Online (Sandbox Code Playgroud)
我想把它重置回第一天。我试过:
test_date.day = 1 # Attribute 'day' of 'datetime.date' objects is not writable
Run Code Online (Sandbox Code Playgroud)
如何将其重置回第一天(最好不加载其他库)?
这篇文章与我想做的类似,但它使用 Python 2 和旧版本的 pandas。
我有以下 DMS 格式的坐标。我需要将它们转换为十进制。
# Libraries
> library(sp)
> library(magrittr)
# Latitide & Longitude as strings
> lat <- '21d11m24.32s'
> lng <- '104d38m26.88s'
Run Code Online (Sandbox Code Playgroud)
我试过:
# Libraries
> library(sp)
> library(magrittr)
# Latitide & Longitude as strings
> lat <- '21d11m24.32s'
> lng <- '104d38m26.88s'
Run Code Online (Sandbox Code Playgroud)
虽然很接近,但这个结果与我从这个网站得到的输出不同。根据该网站,正确的输出应该是:
纬度:21.190089
经度:104.6408
看来sp::char2dms和as.numeric正在舍入坐标。我在使用此方法转换大量 DMS 坐标时注意到了这个问题,因为转换后唯一值的数量急剧减少。
我正在使用分类变量进行回归并遇到了这个问题。在这里,用户想要为每个虚拟对象添加一列。这让我很困惑,因为我虽然在列中包含所有存储的as.factor()虚拟变量的长数据相当于拥有虚拟变量。
有人可以解释以下两个线性回归模型之间的区别吗?
线性模型 1,其中月份是一个因素:
dt_long
Sales Period Month
1: 0.4898943 1 M1
2: 0.3097716 1 M1
3: 1.0574771 1 M1
4: 0.5121627 1 M1
5: 0.6650744 1 M1
---
8108: 0.5175480 24 M12
8109: 1.2867316 24 M12
8110: 0.6283875 24 M12
8111: 0.6287151 24 M12
8112: 0.4347708 24 M12
M1 <- lm(data = dt_long,
fomrula = Sales ~ Period + factor(Month)
Run Code Online (Sandbox Code Playgroud)
线性模型 2,其中每个月都是一个指标变量:
dt_wide
Sales Period M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 …Run Code Online (Sandbox Code Playgroud) 我使用matplotlib.plt和绘制了两个不同的子图pandas.DataFrame.plot。
两个数字都存储在同一个 pandas 数据框中,我将其称为f. 您可以在此处下载示例数据。
这些图之一无法用函数来描述(也就是说,一个x值可以产生两个或多个y值。这就是导致问题的原因(我正在尝试绘制一个正方形)。
我试过:
f[f['figure'] == 'fig1'].plot(x='x_axis', y='y_axis', legend=False)
f[f['figure'] == 'fig2'].plot(x='x_axis', y='y_axis', legend=False)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我希望将两个子图合并为一个子图。有没有办法在与第一个子图相同的子图中绘制第二个子图?我想将两个数字堆叠在一个子图中。
我有一个日期列my_table,我想在其中添加三个月。AWS Redshift 文档建议使用DATEADD或ADD_MONTHS,但我收到以下错误消息。
和DATEADD:
SYNTAX_ERROR:第 2:13 行:无法解析列“月份”
和ADD_MONTHS:
SYNTAX_ERROR:第 2:5 行:函数 add_months 未注册
这是我的数据的样子:
select
my_date
from
my_table
limit 3
Run Code Online (Sandbox Code Playgroud)
| 我的约会 |
|---|
| 2019-03-01 |
| 2019-04-01 |
| 2019-05-01 |
我想做以下事情:
select
add_months(my_date, 3) as plus3m
from
my_table
limit 3
Run Code Online (Sandbox Code Playgroud)
| 加3米 |
|---|
| 2019-06-01 |
| 2019-07-01 |
| 2019-08-01 |
sql amazon-web-services presto amazon-redshift amazon-athena
我有一个像这样一列的熊猫数据框:
| 合并_城市 |
|---|
| 纽约、威斯康星、亚特兰大 |
| 东京、京都、铃木 |
| 巴黎、波尔多、里昂 |
| 孟买、德里、班加罗尔 |
| 伦敦、曼彻斯特、伯明翰 |
我想要一个新的数据框,输出如下:
| 合并_城市 | 城市 |
|---|---|
| 纽约、威斯康星、亚特兰大 | 纽约 |
| 纽约、威斯康星、亚特兰大 | 威斯康星州 |
| 纽约、威斯康星、亚特兰大 | 亚特兰大 |
| 东京、京都、铃木 | 东京 |
| 东京、京都、铃木 | 京都 |
| 东京、京都、铃木 | 铃木 |
| 巴黎、波尔多、里昂 | 巴黎 |
| 巴黎、波尔多、里昂 | 波尔多 |
| 巴黎、波尔多、里昂 | 里昂 |
| 孟买、德里、班加罗尔 | 孟买 |
| 孟买、德里、班加罗尔 | 德里 |
| 孟买、德里、班加罗尔 | 班加罗尔 |
| 伦敦、曼彻斯特、伯明翰 | 伦敦 |
| 伦敦、曼彻斯特、伯明翰 | 曼彻斯特 |
| 伦敦、曼彻斯特、伯明翰 | 伯明翰 |
简而言之,我想将所有城市拆分为不同的行,同时保留“Merged_Cities”列。
这是一个可复制的版本df:
df = pd.DataFrame({'Merged_Cities':['New York, Wisconsin, Atlanta',
'Tokyo, Kyoto, Suzuki',
'Paris, Bordeaux, Lyon',
'Mumbai, Delhi, Bangalore',
'London, Manchester, Bermingham']})
Run Code Online (Sandbox Code Playgroud) 我有以下墨西哥地图。它显示了所有市政当局和大约400个气象站。
我想在每个车站周围创建一个10公里的缓冲区,并最终将每个城市与位于每个半径内的车站相关联。
地图和测站存储在单独的sf对象上。我累了以下几点:
buffers <- st_buffer(stations, dist = 1)
Run Code Online (Sandbox Code Playgroud)
我以为dist争论已定为公里,所以我尝试了dist = 10。不幸的是,这为每个工作站返回了巨大的缓冲区。这就是为什么我使用dist = 1,但是即使这些缓冲区也和状态一样大!这个问题表明我将站点转换为爱尔兰网格,但是我无法复制已接受的答案。我现在想知道dist参数设置为什么单位。
根据前面提到的问题,我认为将其设置为度。如何在每个站周围设置10公里的缓冲区?
附加信息:
在两个对象(墨西哥地图和站点)上,我的CRS都设置为4326。
这是我的stations数据:
> dput(head(stations))
structure(list(station_number = c(1004L, 1005L, 1008L, 1012L,
1017L, 1018L), station_alt = c(1925, 1844, 2323, 1589, 2172,
2053), month = c(9L, 9L, 9L, 9L, 9L, 9L), Mean_min = c(11.6,
12.75, 12.25, 13.9666666666667, 12.9, 12.6833333333333), Mean_max = c(26.9333333333333,
26.85, 24.0833333333333, 29.0333333333333, 24.8666666666667,
26.1333333333333), months_observed = c(5L, 5L, …Run Code Online (Sandbox Code Playgroud) 我有以下数据框:
df = pd.DataFrame({"Person":[1,1,2,2,3,3,3,3],
"Bank":["B1","B2","B9","B2","B6","B1","B1","B5",]})
Person Bank
0 1 B1
1 1 B2
2 2 B9
3 2 B2
4 3 B6
5 3 B1
6 3 B1
7 3 B5
Run Code Online (Sandbox Code Playgroud)
我想删除第一次B1出现之前每个人的所有行。也就是说,我想保留行Bank == B1及其后面的行。
这就是我想要得到的:
Person Bank
0 1 B1
1 1 B2
5 3 B1
6 3 B1
7 3 B5
Run Code Online (Sandbox Code Playgroud)
如果B1从未发生过,则清除属于该人的所有行。如果在 第一次出现之前有行B1,我想删除它们。
我想编写一个单行 if-else 语句,如果不满足第一个条件,则该语句不执行任何操作。这个问题与我想要实现的目标非常相似,但我希望我的代码pass在不满足条件时(不执行任何操作)。
换句话说:
# Some list
cols = ['firstname', 'middlename', 'lastname', 'dob', 'gender', 'salary']
# Filter elements in list
[col if 'name' in col else pass for col in cols]
# Expected output
> ['firstname', 'middlename', 'lastname']
Run Code Online (Sandbox Code Playgroud)
在阅读了另一篇文章中的评论后,我也尝试跳过该else声明:
[col if 'name' in col for col in cols]
> SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我想简化为一行的语法是:
my_list = []
for col in cols:
if 'name' in col:
my_list.append(col)
Run Code Online (Sandbox Code Playgroud)
上面的代码可以简化为一行吗?
我正在使用很多字符串。我意识到我可以使用它们来阅读它们read.table(),但我必须事先清理它们。
我有这样的一般结构:
Request(123): \n Element1: 123123 \n Element2: 456456
Run Code Online (Sandbox Code Playgroud)
我只想删除第一次出现的分号:,而不删除其余的分号。
Request(123) \n Element1: 123123 \n Element2: 456456
Run Code Online (Sandbox Code Playgroud)
让第一个字符串存储在 中test。阅读了几个线程后,我尝试了.*:
gsub(pattern = ".*:", replacement = "", x = test)
Run Code Online (Sandbox Code Playgroud)
我知道你可以使用问号来使搜索变得“懒惰”,但我无法让它工作。
我有以下两个表:
df <- data.table(id = c("01","02","03"), tariff = c("1A","1B","1A"), summer = c(0,0,1), expenditure = c(150,200,90))
id tariff summer expenditure
1: 01 1A 0 150
2: 02 1B 0 200
3: 03 1A 1 90
catalogue <- data.table(tariff = c("1A","1A","1A","1A","1B","1B","1B","1B"), summer = c(0,0,1,1,0,0,1,1),
lb_quant = c(0,50,0,80,0,80,0,100), ub_quant = c(50,Inf,80,Inf,80,Inf,100,Inf), case = letters[1:8])
tariff summer lb_quant ub_quant case
1: 1A 0 0 50 a
2: 1A 0 50 Inf b
3: 1A 1 0 80 c
4: 1A 1 80 Inf d …Run Code Online (Sandbox Code Playgroud) 我有一个包含四个子图的图形。我想将xticks所有suplots 旋转45 度。
对于这个问题,我相信这是可以做到的plt.setp()。
# Create subplots
fig, ax = plt.subplots(2, 2, figsize=(10,5), sharex=True, sharey=True)
# Try to rotate the xticks of all axes
plt.setp(plt.xticks()[1], rotation=45) # Close attempt
# Show
plt.show()
Run Code Online (Sandbox Code Playgroud)