在熊猫数据框中拆分值

时间:2021-01-21 16:35:21

标签: python pandas dataframe

我有一个包含以下列的熊猫数据框:

             Stock     ROC5   ROC20  ROC63    ROCmean
        0    IBGL.SW  -0.59   3.55   6.57     3.18
        0    EHYA.SW   0.98   4.00   6.98     3.99
        0    HIGH.SW   0.94   4.22   7.18     4.11
        0    IHYG.SW   0.56   2.46   6.16     3.06
        0    HYGU.SW   1.12   4.56   7.82     4.50
        0    IBCI.SW   0.64   3.57   6.04     3.42
        0    IAEX.SW   8.34  18.49  14.95    13.93
        0    AGED.SW   9.45  24.74  28.13    20.77
        0    ISAG.SW   7.97  21.61  34.34    21.31
        0    IAPD.SW   0.51   6.62  19.54     8.89
        0    IASP.SW   1.08   2.54  12.18     5.27
        0    RBOT.SW  10.35  30.53  39.15    26.68
        0    RBOD.SW  11.33  30.50  39.69    27.17
        0    BRIC.SW   7.24  11.08  75.60    31.31
        0    CNYB.SW   1.14   4.78   8.36     4.76
        0     FXC.SW   5.68  13.84  19.29    12.94
        0   DJSXE.SW   3.11   9.24   6.44     6.26
        0  CSSX5E.SW  -0.53   5.29  11.85     5.54

如何在没有“.SW”的情况下用股票在数据框中写入一个新的“符号”列。 示例第一行结果应该是 IBGL(修改后的值 IBGL.SW)。 示例最后一行结果应为 CSSX5E(拆分值 SSX5E.SW)。

有没有办法对 ROCmean 列中的值进行升序排序(对最后一列进行升序排序)?

如果我发送以下命令:

new_df['Symbol'] = new_df.loc[:, ('Stock')].str.split('.').str[0]

比我收到一条错误消息: :3: SettingWithCopyWarning: 试图在来自 DataFrame 的切片副本上设置值。 尝试使用 .loc[row_indexer,col_indexer] = value 代替

请参阅文档中的注意事项:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

 new_df['Symbol'] = new_df.loc[:, ('Stock')].str.split('.').str[0]

我该如何解决这个问题?

非常感谢您的支持。

1 个答案:

答案 0 :(得分:1)

使用Series.str.split

In [1908]: df['Symbol'] = df['Stock'].str.split('.').str[0]

In [1909]: df
Out[1909]: 
       Stock   ROC5  ROC20  ROC63  ROCmean  Symbol
0    IBGL.SW  -0.59   3.55   6.57     3.18    IBGL
0    EHYA.SW   0.98   4.00   6.98     3.99    EHYA
0    HIGH.SW   0.94   4.22   7.18     4.11    HIGH
0    IHYG.SW   0.56   2.46   6.16     3.06    IHYG
0    HYGU.SW   1.12   4.56   7.82     4.50    HYGU
0    IBCI.SW   0.64   3.57   6.04     3.42    IBCI
0    IAEX.SW   8.34  18.49  14.95    13.93    IAEX
0    AGED.SW   9.45  24.74  28.13    20.77    AGED
0    ISAG.SW   7.97  21.61  34.34    21.31    ISAG
0    IAPD.SW   0.51   6.62  19.54     8.89    IAPD
0    IASP.SW   1.08   2.54  12.18     5.27    IASP
0    RBOT.SW  10.35  30.53  39.15    26.68    RBOT
0    RBOD.SW  11.33  30.50  39.69    27.17    RBOD
0    BRIC.SW   7.24  11.08  75.60    31.31    BRIC
0    CNYB.SW   1.14   4.78   8.36     4.76    CNYB
0     FXC.SW   5.68  13.84  19.29    12.94     FXC
0   DJSXE.SW   3.11   9.24   6.44     6.26   DJSXE
0  CSSX5E.SW  -0.53   5.29  11.85     5.54  CSSX5E