Pandas拆分正负值DataFrame时缺失Title列,如何修正代码?
如何拆分DataFrame为包含正负值的两个完整DataFrame
你遇到的问题其实是因为agg()方法是用来对列做聚合计算的,它只会返回处理后的单个列数据,自然就丢失了Title列信息。要保留完整的行数据,我们应该用布尔索引来筛选整行,而不是对列做聚合。
先回顾你的初始DataFrame定义:
import pandas as pd headers = ['Title','GainLoss'] data = {'Title':['BMW','Geox','Bugatti','Toyota'],'GainLoss':[300,-87,658,-279]} df = pd.DataFrame(data,columns=headers)
正确的实现方法
直接通过布尔条件筛选整行数据,这样就能保留所有列:
# 筛选GainLoss为正的所有行,得到完整的DataFrame TitleGain = df[df['GainLoss'] > 0] # 筛选GainLoss为负的所有行,得到完整的DataFrame TitleLoss = df[df['GainLoss'] < 0]
验证结果
打印TitleGain会得到:
Title GainLoss 0 BMW 300 2 Bugatti 658
打印TitleLoss会得到:
Title GainLoss 1 Geox -87 3 Toyota -279
这样就完美保留了Title列和对应的GainLoss值,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Nepura
相关产品推荐
相关产品推荐

