擅长:python、mysql、java
<p>尝试groupby<code>filter</code>和<code>.loc</code>赋值</p>
<pre><code>m = df.groupby(df.columns.str[:3], axis=1).filter(lambda x: x.eq('-').all(None))
df.loc[:, m.columns] = 'X'
Out[305]:
aaa1 aaa2 aaa3 aaa4 bbb1 bbb2 bbb3 bbb4 ccc1 ccc2 ddd1 ggg1 ggg6 ggg8 fff9
0 X X X X 1 x a - c - a 3 - - X
1 X X X X s z 1 a 2 - - - - h X
2 X X X X - x i - c - a 3 - - X
3 X X X X - - - - - f - 2 - 2 X
</code></pre>