首页 > 解决方案 > 如何反转数据框列中的所有值?

问题描述

我不确定如何形成这个问题,所以问题并不是它听起来的真正原因。假设我有一列带有浮点数,范围从 0.000000 到 1.000000 我想反转这些值,例如:

1.000000 == 0.000000
0.122000 == 0.888000
0.950000 == 0.050000
0.324546 == 0.675454

我该怎么做?我试过了

normalized_df = normalized_df[headers[-1]].apply(lambda n: (1.000000 - n))

但是我在这段代码中遇到了一个错误:

vals = normalized_df.values.tolist()
for e in vals:
    del e[:3]
results = dict(zip(countries, vals))

一个错误:

Traceback (most recent call last):
  File "...", line ..., in <module>
    del e[:3]
TypeError: 'float' object does not support item deletion

在我的问题开始时,如果没有此代码,通常不会发生此错误

标签: pythonpandasdataframe

解决方案


只需从您的系列中减去 1:

s=pd.Series([1.0, 0.122, 0.95, 0.324546])
s=(1-s)
#here s is your Series
#If needed the difference as positive number use abs() method
s=(s-1).abs()

输出:

0    0.000000
1    0.878000
2    0.050000
3    0.675454

或者

如果您的 df 具有 int/float 值:

df=pd.DataFrame({0: {0: 1.0, 1: 0.122, 2: 0.95, 3: 0.324546},
 1: {0: 1.0, 1: 0.122, 2: 0.95, 3: 0.324546},
 2: {0: 1.0, 1: 0.122, 2: 0.95, 3: 0.324546}})

df=1-df
#If needed the difference as positive number use abs() method
df.sub(1).abs()

输出df

      0           1         2
0   0.000000    0.000000    0.000000
1   0.878000    0.878000    0.878000
2   0.050000    0.050000    0.050000
3   0.675454    0.675454    0.675454

推荐阅读