回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我不熟悉Python熊猫。我有一个数据帧如下:</p>
<pre><code>df = pd.DataFrame({'Name': ['football', 'ramesh','suresh','pankaj','cricket','rakesh','mohit','mahesh'],
'age': ['25', '22','21','32','37','26','24','30']})
print df
Name age
0 football 25
1 ramesh 22
2 suresh 21
3 pankaj 32
4 cricket 37
5 rakesh 26
6 mohit 24
7 mahesh 30
</code></pre>
<p>“名称”列还包含“体育名称”和“体育人姓名”。我想把它分成两个不同的列,如下所示:</p>
<p><strong>预期输出:</strong></p>
^{pr2}$
<p>如果我在“Name”列上创建groupby,则不会得到预期的输出,而且它显然是直接输出,因为“Name”列中没有重复项。我需要使用什么来获得预期的输出?在</p>
<p><strong>编辑:</strong>如果不想硬编码运动名称</p>
<pre><code>df = pd.DataFrame({'Name': ['football', 'ramesh','suresh','pankaj','cricket','rakesh','mohit','mahesh'],
'age': ['', '22','21','32','','26','24','30']})
df = df.replace('', np.nan, regex=True)
nan_rows = df[df.isnull().T.any().T]
sports = nan_rows['Name'].tolist()
df['sports_name'] = df['Name'].where(df['Name'].isin(sports)).ffill()
d = {'Name':'sport_person_name'}
df = df[df['sports_name'] != df['Name']].reset_index(drop=True).rename(columns=d)
df = df[['sports_name','sport_person_name','age']]
print (df)
</code></pre>
<p>我刚刚检查了除了“Name”列之外的所有其他列中包含NAN值的列,它肯定是sports名称。我创建了体育名称的列表,并利用下面的解决方案创建了sports_name和sports_person_name列。在</p>