如何在 pandas 数据框中展平两列?
例如
Task 1 :
company-asset company-debt wealth
GOLD SILVER 2000.0
BRONZE IRON 4000.0
IRON GOLD 1500.0
现在我想要( Assets 为+,债务为负)
GOLD SILVER BRONZE IRON
500 -2000 4000 -2500
Task 2:
Now i want to get the original dataframe with rows where value of
the columns in dataframe 2 is greater than -1000 and less than +1000.
So in the case above it will only be GOLD therefore we get this DF
company-asset company-debt wealth
GOLD SILVER 2000.0
IRON GOLD 1500.0
试试这个:
s = (df.set_index('wealth').stack()
.rename('metal')
.rename_axis(('wealth', 'type'))
.reset_index()
.pipe(lambda l: l.assign(wealth=l.wealth.where(l.type.str.endswith('asset'),
-l.wealth)))
.groupby('metal').wealth.sum())
s
#metal
#BRONZE 4000.0
#GOLD 500.0
#IRON -2500.0
#SILVER -2000.0
#Name: wealth, dtype: float64
metals = s[(s > -1000) & (s < 1000)].index
df[df['company-asset'].isin(metals) | df['company-debt'].isin(metals)]
# company-asset company-debt wealth
#0 GOLD SILVER 2000.0
#2 IRON GOLD 1500.0
我是一名优秀的程序员,十分优秀!