我有一个按日期索引的数据帧。
transactions_ind
Out[25]:
Ticker Transaction Number_of_units Price
Date
2012-10-11 ROG VX Equity Buy 12000 182.00000
2012-10-16 ROG VX Equity Sell -5000 184.70000
2012-11-16 ROG VX Equity Sell -5000 175.51580
2012-12-07 ROG VX Equity Buy 5000 184.90000
2012-12-11 ROG VX Equity Sell -3000 188.50000
2012-12-11 ROG VX Equity Reversal: Sell 3000 188.50000
2012-12-11 ROG VX Equity Sell -3000 188.50000
2012-12-11 ROG VX Equity Reversal: Sell 3000 188.50000
2012-12-11 ROG VX Equity Sell -3000 188.50000
2012-12-20 ROG VX Equity Sell -5000 185.80000我想对重复的索引值(2012-12-11)进行求和,但只对列"Number_of_units“求和。
transactions_ind
Out[25]:
Ticker Transaction Number_of_units Price
Date
2012-10-11 ROG VX Equity Buy 12000 182.00000
2012-10-16 ROG VX Equity Sell -5000 184.70000
2012-11-16 ROG VX Equity Sell -5000 175.51580
2012-12-07 ROG VX Equity Buy 5000 184.90000
2012-12-11 ROG VX Equity Sell -3000 188.50000
2012-12-20 ROG VX Equity Sell -5000 185.80000使用
transactions_ind.groupby(transactions_ind.index).sum()删除列"Ticker“和"Transaction”,因为这些列都填充了非数字值。另外,当我与"Number_of_units“列相加时,我想知道如何处理”Transaction“列中的不同字符串。希望熊猫有一条单线。谢谢你的帮忙!
发布于 2016-02-15 07:42:43
您可以将agg与first和sum结合使用
df = df.groupby(df.index).agg({'Ticker': 'first',
'Transaction': 'first',
'Number_of_units':sum,
'Price': 'first'})
#reorder columns
df = df[['Ticker','Transaction','Number_of_units','Price']]
print df
Ticker Transaction Number_of_units Price
Date
2012-10-11 ROG VX Equity Buy 12000 182.0000
2012-10-16 ROG VX Equity Sell -5000 184.7000
2012-11-16 ROG VX Equity Sell -5000 175.5158
2012-12-07 ROG VX Equity Buy 5000 184.9000
2012-12-11 ROG VX Equity Sell -3000 188.5000
2012-12-20 ROG VX Equity Sell -5000 185.8000发布于 2021-03-08 16:44:01
如果您只有一个索引列(就像您的情况一样),则接受的答案非常有用。如果您有一个MultiIndex,它将不幸地将其缩减为元组。以下是恢复MultiIndex的方法:
import pandas as pd
index_names = df.index.names
df = df.groupby(df.index).agg({...})
df.index = pd.MultiIndex.from_tuples(df.index, names=index_names)https://stackoverflow.com/questions/35403752
复制相似问题