我不熟悉Python熊猫。我有一个数据帧如下:
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
“名称”列还包含“体育名称”和“体育人姓名”。我想把它分成两个不同的列,如下所示:
预期输出:
^{pr2}$如果我在“Name”列上创建groupby,则不会得到预期的输出,而且它显然是直接输出,因为“Name”列中没有重复项。我需要使用什么来获得预期的输出?在
编辑:如果不想硬编码运动名称
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)
我刚刚检查了除了“Name”列之外的所有其他列中包含NAN值的列,它肯定是sports名称。我创建了体育名称的列表,并利用下面的解决方案创建了sports_name和sports_person_name列。在
您可以使用:
与^{} 相似的解决方案-则无需重新排序:
^{pr2}$如果只需要一个sport值,将
limit=1
添加到ffill
并将NaN
s替换为空字符串:您需要的输出是字典而不是数据帧。 字典将显示:
如果你真的想要一个数据帧: 如果名字总是出现在玩家面前:
^{pr2}$应该是什么样子:
相关问题 更多 >
编程相关推荐