首页 > 解决方案 > pandas 将一列的所有值替换为从 0 开始以 n 递增的列值

问题描述

假设我有一个数据框,所以我从文件中读取(注意:* .ene 是一个 txt 文件)

df = pd.read_fwf('filename.ene')
TS     DENSITY     STATS
1
2
3
1
2
3

我只想更改 TS 列。我希望用范围(0,751,125)中的值替换“TS”的所有列值。所需的输出应如下所示:

TS     DENSITY     STATS
0
125
250
500
625
750

我有点迷茫,想了解有关以通用格式执行此类操作的代码的一些见解。我使用 for 循环将值存储到列表中:

K=(6*125)+1 
m = []
for i in range(0,K,125):
    m.append(i)

我想像这样使用 .replace :

df['TS']=df['TS'].replace(old_value, m, inplace=True)

但不确定用什么代替 old_value 来选择“TS”列的所有值,或者这是否可以作为一种方法。

标签: pythonpandas

解决方案


这很简单,如果你要替换所有你需要做的数据

df['TS'] =m

例子 :

import pandas as pd
data = [[10, 20, 30], [40, 50, 60], [70, 80, 90]]

df = pd.DataFrame(data, index=[0, 1, 2], columns=['a', 'b', 'c'])
print(df)
#    a   b   c
# 0  10  20  30
# 1  40  50  60
# 2  70  80  90

df['a'] = [1,2,3]
print(df)
#    a   b   c
# 0  1  20  30
# 1  2  50  60
# 2  3  80  90

推荐阅读