如何在pandas中按日期比较列中的值?

时间:2018-01-19 17:12:03

标签: python pandas dataframe

我有以下示例DataFrame:

 Item Num       Price Type       Sales Date    
 456                    4           2017-12                 
 456                    1           2018-01                 
 340                    1           2017-12                 
 340                    1           2018-01                 
 500                    2           2017-12                 
 500                    1           2018-01 

我想检查1月份价格类型为1的每个商品编号,如果价格类型在12月份不同,并标记该行。所以我希望我的输出是这样的:

 Item_Num       Price Type       Sales Date    Flag
 456                    4           2017-12    price type change
 500                    2           2017-12    price type change

我想到这样的事情:

 for num in df.Item_Num:
     print(desired rows)

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

const path = require('path');

const ExtractTextPlugin = require("extract-text-webpack-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');


module.exports = {
    entry : './src/index.js',
    output : {
        filename : 'bundle.js',
        path : path.resolve(__dirname, 'dist')
    },
    devtool : 'inline-source-map',
    devServer : {
     // contentBase : './dist'
     historyApiFallback: true
     },
    module : {
        rules : [
            {
                test : /\.(js|jsx)$/,
                exclude : /(node_modules|bower_components)/,
                use : {
                    loader : 'babel-loader',
                    options : {
                        presets : [ 'env', 'react', 'stage-2' ]
                    }
                }
            },
            {
                test : /\.scss$/,
                use : ExtractTextPlugin.extract({
                                                    use : [ {
                                                        loader : "css-loader"
                                                    }, {
                                                        loader : "sass-loader"
                                                    } ],
                                                    // use style-loader in
                                                    // development
                                                    fallback : "style-loader"
                                                })
            }
        ]
    },
    plugins : [
        new ExtractTextPlugin("styles.css"),
        new HtmlWebpackPlugin({
            template : path.join(path.resolve(__dirname, 'dist'), 'index.html')
        })
    ],
    resolve : {
        extensions : [ '.js', '.jsx' ]
    }
};

你得到了

df['Sales Date'] = pd.to_datetime(df['Sales Date'])

cond = (df['Item Num'] == df['Item Num'].shift(-1)) & (df['Price Type'] != df['Price Type'].shift(-1))

df['Flag'] = np.where(cond, 'Price Type Change', '')

如果您只想比较2017年decemeber和2018年1月的值,您可以先使用

过滤数据框
    Item Num    Price Type  Sales Date  Flag
0   456         4           2017-12-01  Price Type Change
1   456         1           2018-01-01  
2   340         1           2017-12-01  
3   340         1           2018-01-01  
4   500         2           2017-12-01  Price Type Change
5   500         1           2018-01-01