繁体   English   中英

如何根据 Python 中的条件更改 pandas DataFrame 列中的值

[英]How to change values in a pandas DataFrame column based on a condition in Python

我想更改我的行的值,如果列“state”的值为“CANCELLED”,那么它会将行值从“Activity”列更改为“Cancelled”

它应该是这样的:

ID 活动 state
1个 创建 取消
1个 完全的 取消
2个 创建 已完成
2个 完全的 完成的
3个 创建 拒绝
3个 拒绝 拒绝

我厌倦了使用df.loc[df.state == "CANCELLED", "Activity"] = "cancelled"

它确实改变了活动,但我仍然希望创建的活动是相同的。

还有一个错误

C:\Users\aldev\miniconda3\lib\site-packages\pandas\core\indexing.py:1720: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  self._setitem_single_column(loc, value, pi)

如果有人有答案提前谢谢

df.loc[(df.state == "CANCELLED") & (df.Activity != "created"), "Activity"] = "cancelled"

代码被遗漏() ,在(df.state == "CANCELLED")

我们需要找到 state = 'cancelled' 所在的行。 我们可以使用.loc(row, column)运算符来 select state = 'cancelled' 的条目并返回 'Activity' 列,然后我们只需将这些值替换为 'cancelled'

import pandas as pd

data = {"ID": [1, 1, 2, 2, 3, 3], "Activity": ['created', 'completed', 'created', 'completed', 'created',
                                               'rejected'], "state": ['cancelled', 'cancelled', 'finished', 'finished', 'rejected', 'rejected']}
df = pd.DataFrame(data)
df.loc[df['state'] == 'cancelled', 'Activity'] = 'cancelled'


print(df)
ID 活动 State
1个 取消 取消
1个 取消 取消
2个 创建 完成的
2个 完全的 完成的
3个 创建 拒绝
3个 拒绝 拒绝

暂无
暂无

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

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