我有多个数据帧(25个数据帧),我正在寻找从所有数据帧的三列中反复出现行值。以下是我的daframes的例子
s1 = pd.merge(df1, df2, how='left', on=['chr', 'start', 'end'])
df_final = pd.merge(s1, df3[['chr', 'start', 'end']], how='left', on=['chr', 'start','end'])
最后我的目标是查看这些daframe的第三列并根据这三列值的匹配行以及datafrme的名称作为最后一列提取新的数据帧。所以最终的数据框应该是这样的,
function smak_related_posts() {
global $post;
$tags = wp_get_post_tags( $post->ID );
if($tags) {
foreach( $tags as $tag ) {
$tag_arr .= $tag->slug . ',';
}
$args = array(
'tag' => $tag_arr,
'numberposts' => 4,
'post__not_in' => array($post->ID),
'post_type' => array('post', 'projects'),
);
$related_posts = get_posts( $args );
if($related_posts) {
echo '<footer class="entry-footer">';
echo '<h3>Se også...</h3>';
echo '<div id="masonry-loop">';
get_template_part( 'template-parts/content', 'masonry_sizer' );
foreach ( $related_posts as $post ) : setup_postdata( $post );
get_template_part( 'template-parts/content', 'masonry' );
endforeach; }
}
echo '</div>';
echo '</div>';
wp_reset_postdata();
}
我知道下面的python脚本行将创建上面的输出而不将Sample作为列。
return !selectedCategory || product.category == selectedCategory;
但我有超过25个数据框,我需要根据匹配值查找合并。任何强大而更好的解决方案都会非常感激
答案 0 :(得分:1)
假设您有一个将样本名称映射到DataFrames的字典:
dfs = {'df1': df1, 'df2': df2}
(依此类推)。
常用相关键(可以使用的形式)
common_tups = set.intersection(*[set(df[['chr', 'start', 'end']].drop_duplicates().apply(tuple, axis=1).values) for df in dfs.values()])
现在,您只需要为每个DataFrame查找相关行,添加DataFrame的名称作为示例,并连接结果:
pd.concat([df[df[['chr', 'start', 'end']].apply(tuple, axis=1).isin(common_tups)].assign(Sample=name) for (name, df) in dfs.items()])