python - 检索位于任何行或列的数据框中的某个值,并将其保存在单独的列中,无需 forloop
问题描述
我有一个如下所示的数据框
df
A B C
0 1 TRANSIT_1
TRANSIT_3
0 TRANSIT_5
我想将其更改为以下内容:
Resulting DF
A B C D
0 1 TRANSIT_1
TRANSIT_3
0 TRANSIT_5
所以我尝试使用 str.contains ,一旦我收到带有 True 或 False 的系列,我把它放在 eval 函数中,以某种方式让我得到我想要的表。
我试过的代码:
series_index = pd.DataFrame()
series_index = df.columns.str.contains("^TRANSIT_", case=True, regex=True)
print(type(series_index))
series_index.index[series_index].tolist()
我想用 eval 函数把它写成单独的列,比如
df = eval(df[result]=the index) # I dont know, But eval function does evaluation and puts it in a separate column
解决方案
我找不到一个简单的单线,但这有效:
idx = list(df1[df1.where(df1.applymap(lambda x: 'TRA' in x if isinstance(x, str) else False)).notnull()].stack().index)
a, b = [], []
for sublist in idx:
a.append(sublist[0])
b.append(sublist[1])
df1['ans'] = df1.lookup(a,b)
输出
A B C ans
0 0 1 TRANSIT_1 TRANSIT_1
1 TRANSIT_3 None None TRANSIT_3
2 0 TRANSIT_5 None TRANSIT_5
推荐阅读
- unit-testing - 我如何在 Camunda 过程的单元测试中验证信号?
- mks - Perl 脚本通过 MKS Integrity 中的 CLI 编辑项目?
- join - proc sql 内部连接行为和所需的选择语句
- hadoop - “hdfs dfs -du”与“hdfs dfs -count”,预期相同结果的差异
- html - 如何制作自适应 iFrame 高度?
- javascript - 两个值不会像假设的那样在动作上增加
- python - 如何使用密码和桌面快捷方式为我的 Python 应用程序创建安装文件?
- r - 如何使用另一列中的值过滤列数据框中的数据?
- php - 如何使用 Yii 1.1 框架通过 PHP 下载过滤后的 CSV 文件
- javascript - 语法错误:导入声明只能出现在模块的顶层