【问题标题】:Subsetting a Pandas series对 Pandas 系列进行子集化
【发布时间】:2015-04-29 10:54:43
【问题描述】:

我有一个熊猫系列。基本上是熊猫数据框的一个特定行。

Name: NY.GDP.PCAP.KD.ZG, dtype: int64
NY.GDP.DEFL.ZS_logdiff       0.341671
NY.GDP.DISC.CN               0.078261
NY.GDP.DISC.KN               0.083890
NY.GDP.FRST.RT.ZS            0.296574
NY.GDP.MINR.RT.ZS            0.264811
NY.GDP.MKTP.CD_logdiff       0.522725
NY.GDP.MKTP.CN_logdiff       0.884601
NY.GDP.MKTP.KD_logdiff       0.990679
NY.GDP.MKTP.KD.ZG            0.992603
NY.GDP.MKTP.KN_logdiff      -0.077253
NY.GDP.MKTP.PP.CD_logDiff    0.856861
NY.GDP.MKTP.PP.KD_logdiff    0.990679
NY.GDP.NGAS.RT.ZS           -0.018126
NY.GDP.PCAP.CD_logdiff       0.523433
NY.GDP.PCAP.KD.ZG            1.000000
NY.GDP.PCAP.KN_logdiff       0.999456
NY.GDP.PCAP.PP.CD_logdff     0.857321
NY.GDP.PCAP.PP.KD_logdiff    0.999456

第一列是您在系列中找到的索引。现在我想基本上在一个列表中获取所有这些索引名称,这样只有那些索引应该出现在右列中的绝对值小于 0.5。为了给出上下文,这个系列基本上是对应于相关矩阵中的变量 NY.GDP.PCAP.KD.ZG 的一行,我想保留这个变量以及与这个变量相关性小于 0.5 的那些变量。我将从数据框中删除的其余变量

目前我正在做这样的事情,但它也保留了 NaN

print(tourism[columns].corr().ix[14].where(np.absolute(tourism[columns].corr().ix[14]<0.5))) 

其中旅游是数据框,列是我进行相关分析的列集,14 是与上述列对应的相关矩阵中的行

给出:

NY.GDP.DEFL.ZS_logdiff       0.341671
NY.GDP.DISC.CN               0.078261
NY.GDP.DISC.KN               0.083890
NY.GDP.FRST.RT.ZS            0.296574
NY.GDP.MINR.RT.ZS            0.264811
NY.GDP.MKTP.CD_logdiff            NaN
NY.GDP.MKTP.CN_logdiff            NaN
NY.GDP.MKTP.KD_logdiff            NaN
NY.GDP.MKTP.KD.ZG                 NaN
NY.GDP.MKTP.KN_logdiff      -0.077253
NY.GDP.MKTP.PP.CD_logDiff         NaN
NY.GDP.MKTP.PP.KD_logdiff         NaN
NY.GDP.NGAS.RT.ZS           -0.018126
NY.GDP.PCAP.CD_logdiff            NaN
NY.GDP.PCAP.KD.ZG                 NaN
NY.GDP.PCAP.KN_logdiff            NaN
NY.GDP.PCAP.PP.CD_logdff          NaN
NY.GDP.PCAP.PP.KD_logdiff         NaN
Name: NY.GDP.PCAP.KD.ZG, dtype: float64

【问题讨论】:

    标签: python numpy pandas scipy


    【解决方案1】:

    如果x是你的系列,那么:

    x[x.abs() < 0.5].index
    

    【讨论】:

    • 不错。有效。知道我是否必须仅将这些变量保留在所有列的列表中并删除其他变量,如何以简单的方式做到这一点?就像我想我正在寻找类似 A-B 操作的东西,其中 A 是完整的列列表,B 是子集。所以 A-B 在 A 中给出值,但在 B 中没有。
    • @Manish:您可以使用df[x[x.abs() &lt; 0.5].index] 选择那些列,其中df 是您的DataFrame。
    • 不,这只会给我这些列。数据框中还有其他列,我想保留这些列。所以我想做的就像 df.columns-(not(x[x.abs()
    • @Manish:这似乎与您的第一条评论所说的相反。无论如何,pandas Index 对象都是这样工作的,所以你可以这样做df.columns - x[x.abs() &lt; 0.5].index
    • 抱歉,不会有一个不存在的。但这很奇怪。我不知道熊猫索引可以做集合操作。我最终做了 dropCol=set(columns)-set(x[x.abs()
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多