如何将熊猫PeriodIndex转换为特定的财政年度字符串格式?

时间:2018-11-28 10:56:39

标签: python pandas date

我希望使用periodIndex系列,并创建一个新系列,以“ yyyy / yy”格式显示当前财务年度。例如,以英国财政年度为例-> 01/04至31/03。

 df  = pd.DataFrame({ 
         'dates' : pd.date_range('3/01/11', periods= 3, freq='M'),
         'amounts': np.random.randint(10, 100_000, 3)
 })

 df

      dates     amounts     
0   2011-03-31  28618   
1   2011-04-30  517     
2   2011-05-31  69892   

下面的系列fy展示了我想要的结果。我用过pd.PeriodIndex(df['dates'], freq = 'Q-MAR').strftime('%y')。到目前为止无法实现以下结果。

      dates     amounts     fy
0   2011-03-31  28618   2010/11
1   2011-04-30  517     2011/12
2   2011-05-31  69892   2011/12

谢谢。

numpy 1.15.4

熊猫0.23.4

python 3.7.1

2 个答案:

答案 0 :(得分:2)

似乎您需要:

#!/usr/bin/env bash
max_depth=5

largest_root_dirs=$(hdfs dfs -du -s '/*' | sort -nr | perl -ane 'print "$F[1] "')

printf "%15s  %s\n" "bytes" "directory"
for ld in $largest_root_dirs; do
    printf "%15.0f  %s\n" $(hdfs dfs -du -s $ld| cut -d' ' -f1) $ld
    all_dirs=$(hdfs dfs -ls -R $ld | egrep '^dr........' | perl -ane "scalar(split('/',\$_)) <= $max_depth && print \"\$F[7]\n\"" )

    for d in $all_dirs; do
        line=$(hdfs dfs -du -s $d)
        size=$(echo $line | cut -d' ' -f1)
        parent_dir=${d%/*}
        child=${d##*/}
        if [ -n "$parent_dir" ]; then
            leading_dirs=$(echo $parent_dir | perl -pe 's/./-/g; s/^.(.+)$/\|$1/')
            d=${leading_dirs}/$child
        fi
        printf "%15.0f  %s\n" $size $d
    done
done

替代解决方案:

df  = pd.DataFrame({ 
         'dates' : pd.date_range('3/01/11', periods= 20, freq='2M'),
         'amounts': np.random.randint(10, 100_000, 20)
 })


p = pd.PeriodIndex(df['dates'], freq = 'Q-MAR')
df['fy'] = [(a - b).strftime('%Y/')+(a - b + 4).strftime('%y') for a, b in zip(p, p.quarter)]

答案 1 :(得分:0)

在财政年度尝试这个

row{
         display: flex;
         flex-direction: row;
     }

参考: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Period.strftime.html