我想截断日期时间对象中的时间。我的最小示例如下所示:
date
s1 7/26/2018 9:31
s2 7/26/2018 9:32
s3 7/26/2018 9:33
s4 7/26/2018 9:34
s5 7/26/2018 9:35
s6 7/26/2018 9:36
data = [{'date': '7/26/2018 9:31'},{'date': '7/26/2018 9:32'},
{'date': '7/26/2018 9:33'},{'date': '7/26/2018 9:34'},
{'date': '7/26/2018 9:35'},{'date': '7/26/2018 9:36'}]
df = pd.DataFrame(data, index=['s1', 's2','s3','s4','s5','s6'])
Run Code Online (Sandbox Code Playgroud)
我想截断日期时间对象中的时间。我的目标是这样的:
date
s1 7/26/2018
s2 7/26/2018
s3 7/26/2018
s4 7/26/2018
s5 7/26/2018
s6 7/26/2018
Run Code Online (Sandbox Code Playgroud) 我有一个包含一列的熊猫数据框,我想知道中位数的索引。也就是说,我这样确定中位数:
df.median()
这给了我中值,但我想知道该行的索引。是否可以确定这一点?对于长度不均匀的列表,我可以搜索具有该值的索引,但对于偶数列表长度,这将不起作用。有人可以帮忙吗?
这个问题在另一篇文章中被问到,答案基本上是搜索与中位数具有相同值的行。但就像我说的,这不适用于偶数长度的列表。
下面是一个最小示例(我在下面包含了 Wen 的建议):
df = pd.DataFrame(np.random.randn(6, 1), columns=list('A'))
df.median()
df.loc[df[0]==df[0].median()]
Out[120]:
Empty DataFrame
Columns: [0]
Index: []
Run Code Online (Sandbox Code Playgroud) 我想将我的日期列转换为特定年份的季度指标,比如2018q1或2018q2等.
我的数据看起来像这样,我每季度有一次股票回报(这里没有显示返回列),而且相应的日期,列季度是我想得到的(或类似的东西)
data = [{'date': '3/22/18', 'quarter': 1},{'date': '3/22/18', 'quarter': 1},
{'date': '6/22/18', 'quarter': 3},{'date': '6/22/18', 'quarter': 3},
{'date': '9/22/18', 'quarter': 2},{'date': '9/22/18', 'quarter': 2}]
df = pd.DataFrame(data, index=['s1', 's2','s1','s2','s1','s2'])
date quarter
s1 3/22/13 2013q1
s2 3/24/13 2013q1
s1 6/21/13 2013q2
s2 6/26/13 2013q2
s1 9/21/13 2013q3
s2 9/28/13 2013q3
Run Code Online (Sandbox Code Playgroud) 我正在运行 for 循环来动态填充数据框(我知道小海豹死在某处,因为我使用的是 for 循环)
我有这样的想法(5 是返回标量的函数的占位符):
results<-data.frame(matrix(NA, nrow = length(seq(1:10)), ncol =
length(seq(1:10))))
rows<-data.frame(matrix(NA, nrow = 1, ncol = 1))
for (j in seq(1:10)){
rows<-data.frame()
for (i in seq(1:10)){
rows<-cbind(rows,5)
}
results<-cbind(results,rows)
}
Run Code Online (Sandbox Code Playgroud)
我使用上述方法收到以下错误消息。
Error in match.names(clabs, names(xi)) :
names do not match previous names
Run Code Online (Sandbox Code Playgroud)
有更容易的方法吗?
我有一个带有日期列的数据框,我想创建一个新列,该列告诉我数据集包含多少个相同的日期。这是原始数据集的最小示例:
df1:
date
2017/01/03
2017/01/03
2017/01/04
2017/01/04
2017/01/04
2017/01/05
Run Code Online (Sandbox Code Playgroud)
我想创建此date_count,因此目标数据集为:
df1:
date date_count
2017/01/03 2
2017/01/03 2
2017/01/04 3
2017/01/04 3
2017/01/04 3
2017/01/05 1
Run Code Online (Sandbox Code Playgroud)
创建df1的实际代码:
dict1 = [{'date': '2017/01/03', 'date_count': 2},{'date': '2017/01/03', 'date_count': 2},
{'date': '2017/01/04', 'date_count': 3},{'date': '2017/01/04', 'date_count': 3},
{'date': '2017/01/04', 'date_count': 3},{'date': '2017/01/05', 'date_count': 1}]
df = pd.DataFrame(dict1, index=['s1', 's2','s3','s1','s2','s3'])
Run Code Online (Sandbox Code Playgroud) 我很难带领或滞后于整个数据帧。我能做的是通过以下尝试来移动单个列,但不能进行全部操作:
require('DataCombine')
df_l <- slide(df, Var = var1, slideBy = -1)
Run Code Online (Sandbox Code Playgroud)
使用colnames(x_ret_mon)作为Var不起作用,我被告知在数据框中找不到变量名。
这种尝试将列向右移而不是向下移:
df_l<- dplyr::lag(df)
Run Code Online (Sandbox Code Playgroud)
这只会为滞后变量创建新变量,但是我不知道如何有效删除旧的非滞后值:
df_l<-shift(df, n=1L, fill=NA, type=c("lead"), give.names=FALSE)
Run Code Online (Sandbox Code Playgroud) 我想根据日期列对数据框进行子集化,该列最初具有以下格式:
3/22/13
Run Code Online (Sandbox Code Playgroud)
在我将其转换为日期后:
df['date']=pd.to_datetime(df['date'], format='%m/%d/%y')
Run Code Online (Sandbox Code Playgroud)
我明白了:
2013-03-22 00:00:00
Run Code Online (Sandbox Code Playgroud)
现在我想用这样的子集:
df.loc[(df['date']>'2014-06-22')]
Run Code Online (Sandbox Code Playgroud)
但这要么给了我一个空的数据框或一个完整的数据框,那就是没有过滤。
有什么建议我可以让它发挥作用吗?
备注:我很清楚在其他论坛上也有人问过类似的问题,但由于我的日期列看起来不同,我无法找到解决方案。
我想将我的r数据帧乘以-1,以便反转所有值的符号(转到+ - 反之亦然):
这不起作用:
df_neg <- df*(-1)
Run Code Online (Sandbox Code Playgroud)
还有另一种方法吗?