回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个包含多行的表,它应该按第一列中的数字分组。在其他列中,有一些数据需要合并到一行中</p>
<p>我尝试了第一个函数,但不明白为什么它不起作用</p>
<p>我试图做到这一点:</p>
<pre><code>df6=pd.DataFrame({'JobNumber':[647,817,915], 'Column6':['KT35','KT35','KT35'],'Column7':[1, 4, 1],
'Column8':[1.5, 1.7 ,1], 'Column9':[0,1,2.03]})
</code></pre>
<p>由此:</p>
<pre><code>df=pd.DataFrame({'JobNumber':[647,647,817,817,817, 915,915,915],'Column6':['KT35','KT35','KT35','KT35','KT35','KT35','KT35','KT35'],
'Column7':[0, 1, 0, 0 , 4, 1, 0, 0],'Column8':[1.5, 0 ,0 ,1.7,0,0,0,1], 'Column9':[0,0,1,0,0,0,2.03,0]})
</code></pre>
<p>换句话说,我试图为每个JobNumber创建一行,所有数据都在一行中</p>
<p>我想出了这个密码:</p>
<pre><code>df2 = pd.read_excel(file.xlsx)
df2.columns=['JobNumber','Column6','Column7','Column8','Column9']
df3 = df2.loc[[0],:]
for i in range(len(df2.JobNumber)):
JobNum = df2.iloc[i, 0]
if df2.iloc[i,0] == df2.iloc[i-1, 0]:
df3.loc[df3.JobNumber == JobNum,:] = df3.loc[df3.JobNumber == JobNum,:].combine_first(df2.iloc[[i],:])
else:
df3.append(df2.iloc[i,:])
</code></pre>
<p>但第一行似乎不起作用。df3.append(**)也不起作用
我不明白我的代码有什么问题:/它没有显示任何错误,只是看起来我的循环对df3没有影响,因为当我打印出来时,它只有一行,这是我之前分配给它的一行</p>