小编mat*_*ack的帖子

在Pandas中添加几个月的日期

我试图弄清楚如何在Pandas数据帧中添加3个月的日期,同时保持日期格式,以便我可以使用它来查找范围.

这就是我尝试过的:

#create dataframe
df = pd.DataFrame([pd.Timestamp('20161011'),
                   pd.Timestamp('20161101') ], columns=['date'])

#create a future month period
plus_month_period = 3

#calculate date + future period
df['future_date'] = plus_month_period.astype("timedelta64[M]")
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误:

AttributeError: 'int' object has no attribute 'astype'
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的任何想法?谢谢!

python date pandas

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

将多个csv文件连接到具有相同标头的单个csv - Python

我目前正在使用以下代码导入6,000个csv文件(带标题)并将它们导出到单个csv文件中(带有单个标题行).

#import csv files from folder
path =r'data/US/market/merged_data'
allFiles = glob.glob(path + "/*.csv")
stockstats_data = pd.DataFrame()
list_ = []

for file_ in allFiles:
    df = pd.read_csv(file_,index_col=None,)
    list_.append(df)
    stockstats_data = pd.concat(list_)
    print(file_ + " has been imported.")
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,但速度很慢.处理最多可能需要2天.

我得到了终端命令行的单行脚本,它执行相同的操作(但没有标题).这个脚本需要20秒.

 for f in *.csv; do cat "`pwd`/$f" | tail -n +2 >> merged.csv; done 
Run Code Online (Sandbox Code Playgroud)

有谁知道如何加速第一个Python脚本?为了缩短时间,我考虑过不将它导入DataFrame并只是连接CSV,但我无法弄清楚.

谢谢.

python csv terminal concatenation pandas

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

在 pandas 1.4 中使用 concat 将字典添加到 Pandas DataFrame 中的行

更新到 pandas 1.4 后,当使用 frame.append 将字典附加到 Pandas DataFrame 时,我现在收到以下警告。

FutureWarning: The frame.append method is deprecated and will be
removed from pandas in a future version. Use pandas.concat instead.
Run Code Online (Sandbox Code Playgroud)

下面是代码。尽管我想解决该警告,但这仍然有效。

report = report.append({
                "period":period,
                "symbol":symbol,
                "start_date":start_date,
                "start_price":start_price,
                "start_market_cap":start_market_cap,
                "end_date":end_date,
                "end_price":end_price,
                "end_market_cap":end_market_cap,
                "return":return_
            },ignore_index=True)
Run Code Online (Sandbox Code Playgroud)

我已将代码更新为以下内容,这会引发不同的警告:

report = pd.concat([report,{
                "period":period,
                "symbol":symbol,
                "start_date":start_date,
                "start_price":start_price,
                "start_market_cap":start_market_cap,
                "end_date":end_date,
                "end_price":end_price,
                "end_market_cap":end_market_cap,
                "return":return_
            }],ignore_index=True)

TypeError: cannot concatenate object of type '<class 'dict'>'; only Series and DataFrame objs are valid
Run Code Online (Sandbox Code Playgroud)

2个问题:第一个警告是错误的吗?pandas 1.4 实现这一目标的方法是什么?谢谢。

python concatenation pandas

9
推荐指数
2
解决办法
5440
查看次数

计算Python Pandas Dataframe中的百分位数

我正在尝试计算数据框中每个数字的百分位数,并将其添加到名为"百分位数"的新列中.

这是我的尝试:

import pandas as pd
from scipy import stats

data = {'symbol':'FB','date':['2012-05-18','2012-05-21','2012-05-22','2012-05-23'],'close':[38.23,34.03,31.00,32.00]}

df = pd.DataFrame(data)

close = df['close']

for i in df:
    df['percentile'] = stats.percentileofscore(close,df['close'])
Run Code Online (Sandbox Code Playgroud)

该列未填充并导致"NaN".这应该相当容易,但我不确定我哪里出错了.

在此先感谢您的帮助.

python percentile pandas

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

在 Python Pandas 中创建新的 QuarterEnd 列

我正在尝试使用日历年的季度结束日期创建一个新列(例如,如果今天是 8 月 4 日,则本季度的结束日期将是 9 月 30 日)。

我的 DataFrame 在名为 df['dates'] 的列中有一组日期。示例如下:

03/08/2017
26/02/2015
31/12/2012
16/04/2014
13/04/2016
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码,它不起作用:

df['q_date'] = pd.datetime(pd.tseries.offsets.QuarterEnd(startingMonth=(pd.to_datetime(df['date']).dt.month)))
Run Code Online (Sandbox Code Playgroud)

我也尝试过循环但没有成功。

任何想法都非常感谢。谢谢。

python date dataframe pandas

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

标签 统计

pandas ×5

python ×5

concatenation ×2

date ×2

csv ×1

dataframe ×1

percentile ×1

terminal ×1