<p>可以将<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dropna.html" rel="nofollow noreferrer">^{<cd1>}</a>与<code>apply</code>一起使用:</p>
<pre><code>#pandas 0.24+
df1 = df.apply(lambda x: pd.Series(x.dropna().to_numpy()))
#pandas bellow
df1 = df.apply(lambda x: pd.Series(x.dropna().values))
</code></pre>
<p>如果所有数据都是字符串并且性能很重要,那么可以使用有点变化的<a href="https://stackoverflow.com/a/44559180">justify</a>函数:
地址:</p>
<pre><code>df1 = pd.DataFrame(justify(df.values, invalid_val=np.nan, axis=0),
index=df.index,
columns=df.columns).dropna(how='all')
</code></pre>
<p>功能:</p>
<pre><code>def justify(a, invalid_val=0, axis=1, side='left'):
"""
Justifies a 2D array
Parameters
A : ndarray
Input array to be justified
axis : int
Axis along which justification is to be made
side : str
Direction of justification. It could be 'left', 'right', 'up', 'down'
It should be 'left' or 'right' for axis=1 and 'up' or 'down' for axis=0.
"""
if invalid_val is np.nan:
mask = pd.notna(a)
else:
mask = a!=invalid_val
justified_mask = np.sort(mask,axis=axis)
if (side=='up') | (side=='left'):
justified_mask = np.flip(justified_mask,axis=axis)
out = np.full(a.shape, invalid_val, dtype=object)
if axis==1:
out[justified_mask] = a[mask]
else:
out.T[justified_mask.T] = a.T[mask.T]
return out
</code></pre>
<p><strong>输出</strong>:</p>
<pre><code> Hareket Adı \
0 Smith Machine Shrug
1 Leverage Shrug
2 Standing Dumbbell Upright Row
3 Kettlebell Sumo High Pull
4 Dumbbell Shrug
5 Calf-Machine Shoulder Shrug
6 Barbell Shrug
7 Barbell Shrug Behind The Back
8 Upright Cable Row
9 Cable Shrugs
10 Upright Row - With Bands
11 Smith Machine Behind the Back Shrug
12 Smith Machine Upright Row
13 Clean Shrug
14 Scapular Pull-Up
15 Snatch Shrug
Url Düzey \
0 https://www.bodybuilding.com/exercises/smith-m... Level: Beginner
1 https://www.bodybuilding.com/exercises/leverag... Level: Beginner
2 https://www.bodybuilding.com/exercises/standin... Level: Beginner
3 https://www.bodybuilding.com/exercises/kettleb... Level: Intermediate
4 https://www.bodybuilding.com/exercises/dumbbel... Level: Beginner
5 https://www.bodybuilding.com/exercises/calf-ma... Level: Beginner
6 https://www.bodybuilding.com/exercises/barbell...
7 https://www.bodybuilding.com/exercises/barbell... Level: Beginner
8 https://www.bodybuilding.com/exercises/upright... Level: Intermediate
9 https://www.bodybuilding.com/exercises/cable-s... Level: Beginner
10 https://www.bodybuilding.com/exercises/upright... Level: Beginner
11 https://www.bodybuilding.com/exercises/smith-m... Level: Beginner
12 https://www.bodybuilding.com/exercises/smith-m... Level: Beginner
13 https://www.bodybuilding.com/exercises/clean-s... Level: Beginner
14 https://www.bodybuilding.com/exercises/scapula... Level: Beginner
15 https://www.bodybuilding.com/exercises/snatch-... Level: Intermediate
Kas Grubu Ekipmanlar
0 Traps Machine
1 Traps Machine
2 Traps Dumbbell
3 Traps Kettlebells
4 Traps Dumbbell
5 Traps Machine
6 Traps Barbell
7 Traps Barbell
8 Traps Cable
9 Traps Cable
10 Traps Bands
11 Traps Machine
12 Traps Machine
13 Traps Barbell
14 Traps None
15 Traps Barbell
</code></pre>