擅长:python、mysql、java
<p>我认为一种有效的方法是将数据帧分成4个相等的部分,然后沿着索引重新合并</p>
<p>这里的问题是我们可以在concat语句中动态重命名的列名</p>
<pre><code>import numpy as np
lst = np.array_split([i for i in range(len(df.columns))],4)
[array([0, 1, 2, 3]),
array([4, 5, 6, 7]),
array([ 8, 9, 10, 11]),
array([12, 13, 14])]
</code></pre>
<hr/>
<pre><code>dfs = pd.concat( [
df.iloc[:,i].rename(columns=
dict(zip(df.iloc[:,i].columns,range(4)))
)
for i in lst
]).dropna(how='all')
</code></pre>
<hr/>
<pre><code> print(dfs)
0 1 2 3
A17 a b 1.0 AUG)
nn6 c d 2.0 POS)
JFK a b 4.0 UUI)
nn6 e f 2.0 Hi)
JFK c v 8.0 Yo)
JFK t f 9.0 po)
</code></pre>
<p>这里唯一的区别是,由于是na,您缺少所需输出中的一行</p>
<p>我们可以使用<code>combine_first</code>进行联合,以获得两个数据帧之间的增量</p>
<pre><code>dfs = dfs.combine_first(df.iloc[:,:0])
print(dfs)
0 1 2 3
A17 a b 1.0 AUG)
AZV NaN NaN NaN NaN
JFK a b 4.0 UUI)
JFK c v 8.0 Yo)
JFK t f 9.0 po)
nn6 c d 2.0 POS)
nn6 e f 2.0 Hi)
</code></pre>