我试图在 Python 中重现我的 Stata 代码,我被指向了 Pandas 的方向。然而,我很难思考如何处理数据。
假设我想遍历列标题“ID”中的所有值。如果该 ID 与特定数字匹配,那么我想更改两个对应的值 FirstName 和 LastName。
在 Stata 中,它看起来像这样:
replace FirstName = "Matt" if ID==103
replace LastName = "Jones" if ID==103
因此,这会将 FirstName 中与 ID == 103 的值对应的所有值替换为 Matt。
在熊猫中,我正在尝试这样的事情
df = read_csv("test.csv")
for i in df['ID']:
if i ==103:
...
不知道从这里去哪里。有任何想法吗?
原文由 Parseltongue 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种选择是使用 Python 的切片和索引功能以逻辑方式评估条件所在的位置并覆盖那里的数据。
假设您可以使用
pandas.read_csv
将数据直接加载到pandas
中,那么以下代码可能对您有所帮助。如评论中所述,您还可以一次性对两列进行分配:
请注意,您需要
pandas
版本 0.11 或更高版本才能使用loc
进行覆盖分配操作。另一种方法是使用所谓的链式赋值。这种行为不太稳定,因此它不被认为是最佳解决方案(在文档中 明确不鼓励),但了解以下内容很有用: