繁体   English   中英

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

[英]How to update the last column value in all the rows in csv file using python(pandas)

我正在尝试使用 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='|')

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

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM