小编Art*_*Sbr的帖子

将 pandas 时间戳重置为每月的第一天

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。

python datetime pandas

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

将 DMS 坐标转换为 R 中的十进制

我有以下 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::char2dmsas.numeric正在舍入坐标。我在使用此方法转换大量 DMS 坐标时注意到了这个问题,因为转换后唯一值的数量急剧减少。

gis r coordinates r-sp r-sf

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

分类变量(因子)与虚拟变量的区别

我正在使用分类变量进行回归并遇到了这个问题。在这里,用户想要为每个虚拟对象添加一列。这让我很困惑,因为我虽然在列中包含所有存储的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)

statistics r linear-regression lm

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

在同一个子图中叠加两个子图(matplotlib)

我使用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)

无花果

我希望将两个子图合并为一个子图。有没有办法在与第一个子图相同的子图中绘制第二个子图?我想将两个数字堆叠在一个子图中。

python matplotlib pandas

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

在 AWS Athena 中添加迄今月份列

我有一个日期列my_table,我想在其中添加三个月。AWS Redshift 文档建议使用DATEADDADD_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

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

对 Pandas 数据帧执行拆分并创建一个新帧

我有一个像这样一列的熊猫数据框:

合并_城市
纽约、威斯康星、亚特兰大
东京、京都、铃木
巴黎、波尔多、里昂
孟买、德里、班加罗尔
伦敦、曼彻斯特、伯明翰

我想要一个新的数据框,输出如下:

合并_城市 城市
纽约、威斯康星、亚特兰大 纽约
纽约、威斯康星、亚特兰大 威斯康星州
纽约、威斯康星、亚特兰大 亚特兰大
东京、京都、铃木 东京
东京、京都、铃木 京都
东京、京都、铃木 铃木
巴黎、波尔多、里昂 巴黎
巴黎、波尔多、里昂 波尔多
巴黎、波尔多、里昂 里昂
孟买、德里、班加罗尔 孟买
孟买、德里、班加罗尔 德里
孟买、德里、班加罗尔 班加罗尔
伦敦、曼彻斯特、伯明翰 伦敦
伦敦、曼彻斯特、伯明翰 曼彻斯特
伦敦、曼彻斯特、伯明翰 伯明翰

简而言之,我想将所有城市拆分为不同的行,同时保留“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)

python expand split dataframe pandas

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

默认情况下,“ st_buffer”中的“ dist”参数设置为什么单位?

我有以下墨西哥地图。它显示了所有市政当局和大约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)

r r-sf

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

删除 pandas 数据框中条件第一次出现之前的所有行

我有以下数据框:

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,我想删除它们。

python pandas

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

在一行 Python if-else 语句中传递语句

我想编写一个单行 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)

上面的代码可以简化为一行吗?

python

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

替换 R 中字符串中第一次出现的字符

我正在使用很多字符串。我意识到我可以使用它们来阅读它们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)

我知道你可以使用问号来使搜索变得“懒惰”,但我无法让它工作。

string r gsub

0
推荐指数
1
解决办法
2438
查看次数

如果groupby参数落入一个间隔(在R中非等联接),则合并两个表

我有以下两个表:

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)

merge r data.table

0
推荐指数
1
解决办法
41
查看次数

旋转子图中的 xticks(xticklabels 旋转)

我有一个包含四个子图的图形。我想将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)

关闭

python matplotlib xticks

0
推荐指数
1
解决办法
2307
查看次数