我正在迭代一个数据帧,每当第一个数据帧中的一行是某个值时,就尝试在另一个数据帧中追加新值
考虑下面两个数据框:
print(full_df)
AccessName PolicyArn
0 arn:aws:glue:sample arn:aws:iam::971340810992:policy/service-role/...
1 arn:aws:glue:sample2 arn:aws:iam::971340810992:policy/service-role/...
2 --- arn:aws:iam::971340810992:policy/service-role/...
3 arn:aws:s3:::sample3 arn:aws:iam::971340810992:policy/service-role/...
print(side_df)
AccessName
0 sample-test
1 query_sample
2 us-east-1-sample
如果full_df
中的AccessName
是某个值,则side_df
被追加到full_df
之后,对于所有行,第二行值始终为arn
arn = 'fixed_value'
for index, row in full_df.iterrows():
if row['AccessName'] == '---':
#Here I don't know how I'd define the code to append the side_df values:
#full_df['AccessName'] = side_df['AccessName']
#full_df['PolicyArn'] = arn
最好在该点上再做一个if语句,迭代side_df值并逐行追加
这个for函数嵌套在实际代码中,并且动态生成arn
期望输出:
AccessName PolicyArn
0 arn:aws:glue:sample arn:aws:iam::971340810992:policy/service-role/...
1 arn:aws:glue:sample2 arn:aws:iam::971340810992:policy/service-role/...
2 --- arn:aws:iam::971340810992:policy/service-role/...
3 sample-test fixed_value
4 query_sample fixed_value
5 us-east-1-sample fixed_value
6 arn:aws:s3:::sample3 arn:aws:iam::971340810992:policy/service-role/...
编写此代码的最佳方式是什么
您可以重新索引并附加数据帧,然后
fillna()
如下所示:初始化:
解决方案
重要提示: 一般来说,对于大型数据集,不建议寻找涉及迭代的解决方案,尽量寻找向量化的解决方案,并避免像
.iterrows()
和.apply()
这样的方法。祝你好运首先,让我们构造您的
side_df
:假设
full_df
如下所示:现在,让我们获取具有您的条件的行的索引,例如:
现在,您希望在您的条件发生后附加
side_df
:相关问题 更多 >
编程相关推荐