我已经使用熊猫整理了数据。我将程序填写如下

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的值。如下图



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



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

请帮我

print(df2.info())是


RangeIndex:1089023条目,0到1089022

数据列(共8列):

STDR_YM_CD 1089023非空对象

TRDAR_CD 1089023非空int64

TRDAR_CD_NM 1085428非空对象

SVC_INDUTY_CD 1089023非空对象

SVC_INDUTY_CD_NM 1089023非空对象

THSMON_SELNG_AMT 1089023非空int64

THSMON_SELNG_CO 1089023非空int64

STOR_CO 1089023非空int64

dtypes:int64(4),对象(4)

内存使用量:66.5+ MB

没有

最佳答案

MultiIndex被称为第一列和第二列,如果默认情况下第一层具有重复项,则会“分散”较高级别的索引,以使控制台输出看起来更轻松。

通过将MultiIndex设置为display.multi_sparse,可以在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按文件:

您可以通过在usecols中添加参数read_csv然后通过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

07-24 09:22