如何使用python(熊猫)更新csv文件中所有行的最后一列值



我正在尝试使用 Pandas 更新 csv 文件中所有行的最后一列值。 但是在更新值时,其他列值正在下降。

file = r'Test.csv'
# Read the file
df = pd.read_csv(file, error_bad_lines=False)
# df.at[3, "ingestion"] = '20'
df.set_value(1, "ingestion", '30')
df.to_csv("Test.csv", index=False, sep='|')

使用带有-1DataFrame.iloc选择最后一列,:选择所有行:

df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')})
print (df)
A  B  C  D  E  F
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b
df.iloc[:, -1] = '20'
print (df)
A  B  C  D  E   F
0  a  4  7  1  5  20
1  b  5  8  3  3  20
2  c  4  9  5  6  20
3  d  5  4  7  9  20
4  e  5  2  1  2  20
5  f  4  3  0  4  20

编辑:

要按上次编辑值更新所有行,请与:交换-1并按DataFrame.iat获取最后一列值:

df.iloc[-1, :] = df.iat[-1, -1]
print (df)
A  B  C  D  E  F
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  b  b  b  b  b  b
pd.DataFrame.set_value

不适合设置列中的所有值。根据文档,它用于在特定行和列标签组合中设置标量。

此外,从 v0.21 开始,它已被弃用,取而代之的是.at/.iat访问器。

相反,您可以通过提取最终列标签来直接设置值,假设您没有重复的列名:

df[df.columns[-1]] = '20'

或者,更直接地说,您可以使用iloc访问器:

df.iloc[:, -1] = '20'

最新更新