python - 如何根据应用于另一列的条件设置 Pandas DataFrames 列值
问题描述
我有一个数据框,我想向其中添加另一列,这取决于基于该特定单元格中其他列的值。
我不断得到TypeError: string indices must be integers, not str
。
这是我的数据框:df,其中所有列的值都是字符串格式
ID Key
_1 A
_2 B, C
_3 A
_4 D, E
_5 B, C
我的预期输出是
ID Key Name
_1 A n0, n1
_2 B, C n2
_3 A n3
_4 D, E n4
_5 B, C n5, n6
这是我所做的:
df[df['ID'].str.contains('1')]['Name'] = 'n0, n1' that gave me Type Error.
请注意,id 匹配是有意的子字符串匹配。
尝试使用numpy where
,但这也给了我同样的错误。我跟着这个链接。
根据列值的子集设置新列值的正确方法是什么。此外,我稍后会涵盖所有值,其中我为每个ID
(这里从 1 到 5)执行此操作。
解决方案
以下对我有用:
df.loc[df['ID'].str.contains('1'), 'Name'] = 'n0, n1'
基本上你需要使用 .loc[row_index, col_index] = val 来修改现有的数据框。
使用 df[row_index][col_index] 只会创建我相信的值的副本。
这也假设您已经定义了该列:
df['Name'] = pd.Series()
推荐阅读
- ruby - 从 ruby 模块调用 Fastlane 操作
- c# - 已添加 Visual Studio 2019 .NET Forms-Notification 处理程序
- perl - Perl Hash 不同类型的值
- php - PHP cURL 响应标头
- javascript - 打字稿中的链接函数
- linux - 如何防止错误打破循环
- javascript - Wordpress 插件未显示在开发子域中
- python - 为什么我在运行这个 .py 和 .kv 脚本时会出现黑屏?
- java - 如何使用十进制格式仅在整数中隐藏尾随零
- python - 如何使用 .kv 和 .py 为 kivy 应用程序创建标准 mvp?