首页 > 解决方案 > 更改列数据框python中的维度

问题描述

我想忽略伟大的价值观,让它们与其他人处于同一水平。

我有一个像这样的数据框:

import numpy as np
import pandas as pd
ar = np.array([['2018-03-14T10:58:20.000Z', 2], 
               ['2018-03-14T11:58:20.000Z', 3],
               ['2018-03-14T12:58:20.000Z', 2],
               ['2018-03-14T13:58:20.000Z', 10],
               ['2018-03-14T14:58:20.000Z', 11],
               ['2018-03-14T15:58:20.000Z', 12],
               ['2018-03-14T16:58:20.000Z', 11],
               ['2018-03-14T17:58:20.000Z', 3],
               ['2018-03-14T18:58:20.000Z', 2],
               ['2018-03-14T19:58:20.000Z', 4],
              ])
df = pd.DataFrame(ar, columns = ['Date', 'weight'])
df['Date'] = pd.to_datetime(df['Date'])
df['weight'] = df['weight'].astype(float)

我想获得相同级别的权重,例如:

df_new =      [['2018-03-14T10:58:20.000Z', 2], 
               ['2018-03-14T11:58:20.000Z', 3],
               ['2018-03-14T12:58:20.000Z', 2],
               ['2018-03-14T13:58:20.000Z', 2],
               ['2018-03-14T14:58:20.000Z', 3],
               ['2018-03-14T15:58:20.000Z', 4],
               ['2018-03-14T16:58:20.000Z', 3],
               ['2018-03-14T17:58:20.000Z', 3],
               ['2018-03-14T18:58:20.000Z', 2],
               ['2018-03-14T19:58:20.000Z', 4],
              ])

我怎么能这样做?

标签: pythonpython-3.xpandasdataframe

解决方案


我假设您希望权重向量值彼此接近。你可以试试这段代码

std=np.std(df['weight']) for i,j in df.iterrows(): if (j['weight'] > std): df['weight'][i] = j['weight']/std

输出

输出


推荐阅读