<p>假设<code>Date</code>将有<code>NaN</code>,如果需要合并行,则代码如下</p>
<p>首先创建一个伪列<code>merged</code>。它将合并<code>Description</code>、<code>Debit</code>和<code>Credit</code>的所有值。仅当值为alpha(不包括数值)时,它才会合并</p>
<p>然后使用groupby transform(lambda)函数替换<code>Description</code></p>
<p>如果行的<code>Date</code>为NaN,则删除NaN。同时删除临时列<code>merged</code></p>
<pre><code>df['merged'] = df[['Description','Debit','Credit']].apply(lambda x: ''.join([str(a) for a in x if pd.notnull(a) and not isinstance(a, float)]) ,axis=1)
df['Description'] = df.groupby("originalIdx")['merged'].transform(lambda x: "".join(x))
df.dropna(subset=['Date'],inplace=True)
df.drop(columns='merged',inplace=True)
print (df)
</code></pre>
<p>这将为您提供:</p>
<pre><code> Date Description Debit Credit Balance originalIdx
0 01-03-19 AAAA NaN NaN 49Cr 0
1 01-03-19 ASSSXYZABCsaa NaN 6000.0 55Cr 1
3 01-03-19 ABZ 289.0 NaN 55Cr 3
</code></pre>
<p>下面是完整的代码,包括数据和输出</p>
<p>将<code>df['merged']</code>替换为以下代码:</p>
<pre><code>df['merged'] = df[['Description','Debit','Credit']].apply(lambda x: ''.join([str(a) for a in x if pd.notnull(a) and not isinstance(a, float)]) ,axis=1)
</code></pre>
<p>完整代码为:</p>
<pre><code>import pandas as pd
import numpy as np
pd.set_option('display.max_columns', 200)
pd.set_option('display.max_colwidth', 250)
c = ['Date','Description','Debit','Credit','Balance','originalIdx']
d = [['01-03-19','FORTAP-MUMBAI/',np.NaN, np.NaN, '49656.25Cr',0],
['01-03-19','FORTAP-MUMBAI/******',np.NaN,6000.00,'55656.25Cr',1],
[np.NaN,'UP/*ABC*/*DEF*','UPI/*PQR*/*XYZ*','paytm/NA',np.NaN,1],
['01-03-19','MBK/*ABCDEF*/*ZZZ*',289.00,np.NaN,'55357.25Cr',3]]
df = pd.DataFrame(d,columns=c)
print (df)
df['merged'] = df[['Description','Debit','Credit']].apply(lambda x: ''.join([str(a) for a in x if pd.notnull(a) and not isinstance(a, float)]) ,axis=1)
df['Description'] = df.groupby("originalIdx")['merged'].transform(lambda x: "".join(x))
df.dropna(subset=['Date'],inplace=True)
df.drop(columns='merged',inplace=True)
print (df)
</code></pre>
<p>附加输出前后:</p>
<p>之前:</p>
<pre><code> Date Description Debit Credit Balance originalIdx
0 01-03-19 FORTAP-MUMBAI/ NaN NaN 49656.25Cr 0
1 01-03-19 FORTAP-MUMBAI/****** NaN 6000.0 55656.25Cr 1
2 NaN UP/*ABC*/*DEF* UPI/*PQR*/*XYZ* paytm/NA NaN 1
3 01-03-19 MBK/*ABCDEF*/*ZZZ* 289.0 NaN 55357.25Cr 3
</code></pre>
<p>之后:</p>
<pre><code> Date Description Debit Credit Balance originalIdx
0 01-03-19 FORTAP-MUMBAI/ NaN NaN 49656.25Cr 0
1 01-03-19 FORTAP-MUMBAI/******UP/*ABC*/*DEF*UPI/*PQR*/*XYZ*paytm/NA NaN 6000.0 55656.25Cr 1
3 01-03-19 MBK/*ABCDEF*/*ZZZ* 289.0 NaN 55357.25Cr 3
</code></pre>