如何展平熊猫数据框中的两列?

例如

Task 1 :

company-asset  company-debt   wealth
    GOLD          SILVER      2000.0
    BRONZE        IRON        4000.0
    IRON          GOLD        1500.0


现在我要(资产为+债务为负)

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

关于python - 展平Pandas数据框中的列,然后引用原始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43331525/

10-12 19:27