将数据帧的子集放入矩阵

时间:2018-11-15 23:13:06

标签: python pandas

我有这个数据框:

enter image description here

我只希望将八月至九月下的数字放入一个矩阵,该怎么办?

我尝试了这个cf = df.iloc[:,1:12],它给了我,但它也给了我不需要的标题。

我做到了

cf = df.iloc[:,1:12]
cf = cf.values
print(cf)

这给了我

[['$0.00 ' '$771.98 ' '$0.00 ' ..., '$771.98 ' '$0.00 ' '$1,543.96 ']
 ['$1,320.83 ' '$4,782.33 ' '$1,320.83 ' ..., '$1,954.45 ' '$0.00 '
  '$1,954.45 ']
 ['$2,043.61 ' '$0.00 ' '$4,087.22 ' ..., '$4,662.30 ' '$2,907.82 '
  '$1,549.53 ']
 ..., 
 ['$427.60 ' '$0.00 ' '$427.60 ' ..., '$427.60 ' '$0.00 ' '$427.60 ']
 ['$868.58 ' '$1,737.16 ' '$0.00 ' ..., '$868.58 ' '$868.58 ' '$868.58 ']
 ['$0.00 ' '$1,590.07 ' '$0.00 ' ..., '$787.75 ' '$0.00 ' '$0.00 ']]

我需要这些是浮动类型。

1 个答案:

答案 0 :(得分:2)

给出(从今天的一个较早的问题中窃取):

"""
IndexID IndexDateTime IndexAttribute ColumnA ColumnB
   1      2015-02-05        8           A       B
   1      2015-02-05        7           C       D
   1      2015-02-10        7           X       Y
"""

import pandas as pd
import numpy as np

df = pd.read_clipboard(parse_dates=["IndexDateTime"]).set_index(["IndexID", "IndexDateTime", "IndexAttribute"])

df:

                                     ColumnA ColumnB
IndexID IndexDateTime IndexAttribute                
1       2015-02-05    8                    A       B
                      7                    C       D
        2015-02-10    7                    X       Y

使用

df.values

返回

array([['A', 'B'],
       ['C', 'D'],
       ['X', 'Y']], dtype=object)

对于子集,您可以使用两种技术。在这里,

df.loc[:, "ColumnA":"ColumnB"]

将所有行和切片从ColumnA返回到ColumnB。其他选项包括df[df["column"] == condition]df.iloc[1:3, 0:5]之类的语法;哪种方法最好多少取决于您的数据,代码的可读性以及哪种方法最快。根据我的经验,使用.loc.iloc通常是安全的选择。

通常,对于熊猫问题,发布一些示例数据而不是数据框的图像很有帮助;否则,SO用户必须承担产生模仿您的数据的负担。

编辑: 要将货币转换为浮动货币,请尝试this

df.replace('[\$,]', '', regex=True).astype(float)

因此,在一种情况下,

df.loc[:, "ColumnB":"ColumnC"].replace('[\$,]', '', regex=True).values.astype(float)

收益

array([[1.23, 1.23],
       [1.23, 1.23],
       [1.23, 1.23]])