我在列中丢失了我的值

时间:2016-10-10 05:06:11

标签: python pandas

我使用pandas组织了我的数据。我把我的程序填写如下

import pandas as pd
import numpy as np
df1 = pd.read_table(r'E:\빅데이터 캠퍼스\골목상권 프로파일링 - 서울 열린데이터 광장 3.초기-16년5월분1\17.상권-추정매출\201301-201605\tbsm_trdar_selng.txt\tbsm_trdar_selng_utf8.txt' , sep='|' ,header=None
,dtype = { '0' : pd.np.int})

df1 = df1.replace('201301', int(201301))

df2 = df1[[0 ,1, 2, 3 ,4, 11,12 ,82 ]]

df2_rename = df2.columns = ['STDR_YM_CD', 'TRDAR_CD', 'TRDAR_CD_NM', 'SVC_INDUTY_CD', 'SVC_INDUTY_CD_NM', 'THSMON_SELNG_AMT', 'THSMON_SELNG_CO', 'STOR_CO'  ]

print(df2.head(40)) 

df3_groupby = df2.groupby(['STDR_YM_CD', 'TRDAR_CD' ])
df4_agg = df3_groupby.agg(np.sum)

print(df4_agg.head(30))

当我打印df2时,我可以看到TRDAR_CD列中的11947和11948值。如下面的图片

enter image description here

之后,我使用了groupby函数,在TRDAR_CD列中丢失了11948个值。您可以在下面的图片中看到这种情况

enter image description here

可能,这个问题来自警告信息?警告消息是' sys:1:DtypeWarning:Columns(0)具有混合类型。在导入时指定dtype选项或设置low_memory = False。'

帮我plz

print(df2.info())是

RangeIndex:1089023个条目,0到1089022

数据列(共8列):

STDR_YM_CD 1089023非空对象

TRDAR_CD 1089023非null int64

TRDAR_CD_NM 1085428非空对象

SVC_INDUTY_CD 1089023非空对象

SVC_INDUTY_CD_NM 1089023非空对象

THSMON_SELNG_AMT 1089023非null int64

THSMON_SELNG_CO 1089023非null int64

STOR_CO 1089023非null int64

dtypes:int64(4),object(4)

内存使用量:66.5 + MB

1 个答案:

答案 0 :(得分:2)

MultiIndex被称为第一列和第二列,如果第一级默认重复,则“稀疏”更高级别的索引,以使控制台输出更容易一些。

您可以将display.multi_sparse设置为MultiIndex,在False的第一级显示数据。

样品:

df = pd.DataFrame({'A':[1,1,3],
                   'B':[4,5,6],
                   'C':[7,8,9]})

df.set_index(['A','B'], inplace=True)

print (df)
     C
A B   
1 4  7
  5  8
3 6  9

#temporary set multi_sparse to False
#http://pandas.pydata.org/pandas-docs/stable/options.html#getting-and-setting-options
with pd.option_context('display.multi_sparse', False):
    print (df)
     C
A B   
1 4  7
1 5  8
3 6  9

编辑问题编辑:

我认为问题是值11948的类型是string,因此省略了。

EDIT1 by file:

您可以在read_csv中添加参数usecols然后按GroupBy.sum汇总来简化您的解决方案:

import pandas as pd
import numpy as np

df2 = pd.read_table(r'tbsm_trdar_selng_utf8.txt' , 
                    sep='|' ,
                    header=None ,
                    usecols=[0 ,1, 2, 3 ,4, 11,12 ,82],
                    names=['STDR_YM_CD', 'TRDAR_CD', 'TRDAR_CD_NM', 'SVC_INDUTY_CD', 'SVC_INDUTY_CD_NM', 'THSMON_SELNG_AMT', 'THSMON_SELNG_CO', 'STOR_CO'],
                    dtype = { '0' : int})


df4_agg = df2.groupby(['STDR_YM_CD', 'TRDAR_CD' ]).sum()
print(df4_agg.head(10))
                     THSMON_SELNG_AMT  THSMON_SELNG_CO  STOR_CO
STDR_YM_CD TRDAR_CD                                            
201301     11947           1966588856            74798       73
           11948           3404215104            89064      116
           11949           1078973946            42005       45
           11950           1759827974            93245       71
           11953            779024380            21042       84
           11954           2367130386            94033      128
           11956            511840921            23340       33
           11957            329738651            15531       50
           11958           1255880439            42774      118
           11962           1837895919            66692       68