Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 熊猫修改失败_Pandas - Fatal编程技术网

Pandas 熊猫修改失败

Pandas 熊猫修改失败,pandas,Pandas,有人能给我一些建议吗?为什么我可以成功修改上述粗体代码?我认为您需要: df=pd.read_csv('./data/reward_original_91011.csv') ind0=df[df['DatePay'].isnull()].index df.ix[ind0]['ValuePay']=0 ind1=df[~df['DatePay'].isnull()].index df['DatePay'] = pd.to_datetime(df['DatePay']) df['DateD

有人能给我一些建议吗?为什么我可以成功修改上述粗体代码?

我认为您需要:

df=pd.read_csv('./data/reward_original_91011.csv')

ind0=df[df['DatePay'].isnull()].index

df.ix[ind0]['ValuePay']=0

ind1=df[~df['DatePay'].isnull()].index

df['DatePay'] = pd.to_datetime(df['DatePay'])

df['DateDue'] = pd.to_datetime(df['DateDue'])

ind2=df.ix[ind1][((df.ix[ind1]['DatePay']-df.ix[ind1]['DateDue'])/np.timedelta64(1,'h')).astype(int)>24].index

**df.ix[ind2]['ValuePay']=0**
样本:

df = pd.read_csv('./data/reward_original_91011.csv', parse_dates=['DatePay','DateDue'])

#get boolean mask where NaN
mask = df['DatePay'].isnull()

#modify column ValuePay by mask
df.loc[mask, 'ValuePay'] = 0

#get another mask 
mask1 = ((df['DatePay'] - df['DateDue']) / np.timedelta64(1,'h')) > 24

#inverted mask AND mask1 -> modify ValuePay
df.loc[~mask & mask1, 'ValuePay'] = 0

您可以添加一些示例数据和所需的输出吗?
d = {'DateDue': [pd.Timestamp('2013-10-06 00:00:00'), pd.Timestamp('2013-10-08 00:00:00'), 
                 pd.Timestamp('2013-10-08 00:00:00'), pd.Timestamp('2013-10-08 00:00:00')], 
     'DatePay': [np.NaN, pd.Timestamp('2013-10-06 00:00:00'), 
                 pd.Timestamp('2013-10-12 00:00:00'), pd.Timestamp('2013-10-10 00:00:00')]}
df = pd.DataFrame(d)

print (df)
     DateDue    DatePay
0 2013-10-06        NaT
1 2013-10-08 2013-10-06
2 2013-10-08 2013-10-12
3 2013-10-08 2013-10-10

#get boolean mask where NaN
mask = df['DatePay'].isnull()

#modify column ValuePay by mask
df.loc[mask, 'ValuePay'] = 0

#get another mask 
mask1 = ((df['DatePay'] - df['DateDue']) / np.timedelta64(1,'h')) > 24

#inverted mask AND mask1 -> modify ValuePay
df.loc[~mask & mask1, 'ValuePay'] = 0
print (df)
     DateDue    DatePay  ValuePay
0 2013-10-06        NaT       0.0
1 2013-10-08 2013-10-06       NaN
2 2013-10-08 2013-10-12       0.0
3 2013-10-08 2013-10-10       0.0