假设我有一个数据帧。我想修改具有特定值的行列表。
例如,下面是我的数据框。
df = pd.DataFrame({
"strings":["A", "B", "C", "D", "E"],
"value":["a", "b", "c", "d", "f"],
"price":["1", "2", "3", "4", "5"]})
我想用' 0'替换所有单元格。在行C,D和E中,如下所示。行= [' C',' D',' E']
df = pd.DataFrame({
"strings":["A", "B", "C", "D", "E"],
"value":["a", "b", "0", "0", "0"],
"price":["1", "2", "0", "0", "0"]})
我知道我们可以通过简单地给出行来实现这一目标。名称和某些值,但是由于我们要修改很多行,我们如何使用pandas更有效地做到这一点?
有人暗示吗?
答案 0 :(得分:5)
如果我理解正确,你想要列中的所有值"价格"和"价值"对于列"字符串"的行设置为零具有C,D或E值。
df.loc[df.strings.isin(["C", "D", "E"]), df.columns.difference(["strings"])] = 0
df
Out[82]:
price strings value
0 1 A a
1 2 B b
2 0 C 0
3 0 D 0
4 0 E 0
答案 1 :(得分:1)
这是另一种方法,
考虑您的数据是这样的:
price strings value
0 1 A a
1 2 B b
2 3 C c
3 4 D d
4 5 E f
现在让我们将strings
列作为索引:
df.set_index('strings', inplace='True')
#Result
price value
strings
A 1 a
B 2 b
C 3 c
D 4 d
E 5 f
现在将行C, D, E
的值设置为0
df.loc[['C', 'D','E']] = 0
#Result
price value
strings
A 1 a
B 2 b
C 0 0
D 0 0
E 0 0