条件替换为 pandas
conditional replacement with pandas
我是 python 和 pandas 的新手...
我有一个包含一个文本列的数据框。我想,对于整个列,将值 "AZB" 替换为高于该值的值(-1 的偏移量)
我怎样才能做到这一点?我试过 pandas "where" 也试过
df[(df['INDEX'] == 'AZB')] = df['INDEX']-1
但没用
您可以将 'AZB'
值设置为 NaN
,然后使用 fillna(method='ffill')
将它们替换为上一行中的值。
df.ix[df['INDEX'] == 'AZB', 'INDEX'] = np.NaN
df.fillna(method='ffill', inplace=True)
如果您的数据集不是很大,另一种方法是逐行遍历您的数据框,但速度会慢得多:
for i in range(1, len(df)):
if df.ix[i, 'INDEX'] == 'AZB':
df.ix[i, 'INDEX'] = df.ix[i-1, 'INDEX']
我是 python 和 pandas 的新手...
我有一个包含一个文本列的数据框。我想,对于整个列,将值 "AZB" 替换为高于该值的值(-1 的偏移量)
我怎样才能做到这一点?我试过 pandas "where" 也试过
df[(df['INDEX'] == 'AZB')] = df['INDEX']-1
但没用
您可以将 'AZB'
值设置为 NaN
,然后使用 fillna(method='ffill')
将它们替换为上一行中的值。
df.ix[df['INDEX'] == 'AZB', 'INDEX'] = np.NaN
df.fillna(method='ffill', inplace=True)
如果您的数据集不是很大,另一种方法是逐行遍历您的数据框,但速度会慢得多:
for i in range(1, len(df)):
if df.ix[i, 'INDEX'] == 'AZB':
df.ix[i, 'INDEX'] = df.ix[i-1, 'INDEX']