Python 我怎样才能创建一个新的专栏;“一周”;进入熊猫的数据帧?
我的代码如下:Python 我怎样才能创建一个新的专栏;“一周”;进入熊猫的数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我的代码如下: my_dict = { "Date": pd.date_range('2020', freq='D', periods=100), "Open": np.random.randn(100), "High": np.random.randn(100), "Low": np.random.randn(100), "Close": np.rando
my_dict = {
"Date": pd.date_range('2020', freq='D', periods=100),
"Open": np.random.randn(100),
"High": np.random.randn(100),
"Low": np.random.randn(100),
"Close": np.random.randn(100),
"Volume": np.random.randn(100),
}
df = pd.DataFrame(my_dict)
display(df)
如何添加“周”列和“2020-01”、“2020-02”等值
“2020-01”是指2020年的第一周
import pandas as pd
import numpy as np
my_dict = {
"Date": pd.date_range('2020', freq='D', periods=100),
"Open": np.random.randn(100),
"High": np.random.randn(100),
"Low": np.random.randn(100),
"Close": np.random.randn(100),
"Volume": np.random.randn(100),
}
df = pd.DataFrame(my_dict)
df["Week"]="2020-01"
display(df)
如果希望每行中的值不同,可以创建for循环使用dt year属性获取年份,并与week属性连接。zfill用于填充前导零
(df['Date'].dt.year.astype(str)
.str.cat(df['Date'].dt.week.astype(str).str.zfill(2),
sep='-'))
0 2020-01
1 2020-01
2 2020-01
3 2020-01
4 2020-01
...
95 2020-14
96 2020-15
97 2020-15
98 2020-15
99 2020-15
这样做:
In [2233]: df['Week'] = df.Date.dt.year.astype(str) + '-' + df.Date.dt.week.astype(str).map(lambda x: f'{x:0>2}')
In [2234]: df.Week
Out[2234]:
0 2020-01
1 2020-01
2 2020-01
3 2020-01
4 2020-01
...
95 2020-14
96 2020-15
97 2020-15
98 2020-15
99 2020-15
Name: Week, Length: 100, dtype: object
您还可以执行以下操作:
df["Week"] = 1
df["Week"] = pd.to_datetime(df['Date']).dt.to_period('M')
dt.to_period取M/Y/D值分别打印月份、年份和日期使用
datetime
。我正在使用pandas.apply()
和lambda
函数来格式化周
由于“日期”列是由时间戳类对象组成的,isocalendar()
函数返回一个元组('year'、'week'、'day')
,该元组的格式符合您的需要
import datetime
df['Week']=df['Date'].apply(lambda x: "{0}-{1:02d}".format(*list(x.isocalendar())))
df.head(10)
输出:
我想增加真实的一周。比如2020-01、2020-02。。。2020-54“真实的一周”是什么意思?你的问题不清楚看看这篇文章;您好,我可以将您的函数用于随机日期吗?在您发布的示例中,日期列是datetime对象。因此,您可以直接使用dt并获得所需的数据。如果它不是日期时间对象,则必须转换为日期时间对象。此外,如果date列中不包含月份的日期,则无法获取weekHello,我可以将您的函数用于随机日期吗?是的,它也可以用于随机日期。我认为这不是预期的输出。OP需要的是一年的确切周数,而不是
年-月组合。
Date Open High Low Close Volume Week
0 2020-01-01 -0.628361 -0.019378 0.167120 1.421006 -0.698276 2020-01
1 2020-01-02 -0.515597 0.467128 1.784242 0.358433 0.197478 2020-01
2 2020-01-03 0.781038 0.225310 -0.636053 -0.241801 0.777247 2020-01
3 2020-01-04 1.332335 0.687737 -0.531952 1.554296 -0.243784 2020-01
4 2020-01-05 0.457940 -1.488220 0.408476 -0.196996 -0.970725 2020-01
5 2020-01-06 1.660737 0.610343 -0.769449 -0.854537 -1.203444 2020-02
6 2020-01-07 -0.472873 0.276941 -0.266524 0.450023 1.260696 2020-02
7 2020-01-08 -0.851558 0.092650 0.207837 0.107786 -0.002486 2020-02
8 2020-01-09 0.967156 0.337234 -1.394543 -0.221563 1.231157 2020-02
9 2020-01-10 0.407043 -1.079271 -0.730196 -0.262280 0.367848 2020-02