我在列中丢失了我的值

2024-06-26 01:51:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我用熊猫组织了我的数据。我填写我的程序如下

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\u CD列中看到11947和11948的值。如下图所示

enter image description here

之后,我使用groupby函数,在TRDAR\u CD列中丢失了11948个值。你可以在下图中看到这种情况

enter image description here

可能是警告信息中的问题??警告消息为'系统:1:DtypeWarning:列(0)具有混合类型。在导入时指定dtype选项或将low\u memory设置为False

请帮帮我

无法打印(df2.info())

你知道吗 范围索引:1089023个条目,0到1089022

数据列(共8列):

STDR\u YM\u CD 1089023非空对象

TRDAR_CD 1089023非空int64

TRDAR\u CD\u NM 1085428非空对象

SVC\u industy\u CD 1089023非空对象

SVC\u industy\u CD\u NM 1089023非空对象

THSMON\ U SELNG\ U AMT 1089023非空int64

THSMON\ U SELNG\ U CO 1089023非空int64

STOR\ U CO 1089023非空int64

数据类型:int64(4),对象(4)

内存使用:66.5+MB

没有


Tags: 对象npcdpddf1df2groupbyco
1条回答
网友
1楼 · 发布于 2024-06-26 01:51:16

^{}被称为第一列和第二列,如果第一级在默认情况下有重复项,那么它会“稀疏”更高级别的索引,以使控制台输出更容易看到。你知道吗

通过将^{}设置为False,可以在MultiIndex的第一级显示数据。你知道吗

样品:

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

按问题编辑:

我认为问题是值的类型11948string,所以它被省略了。你知道吗

按文件编辑1:

您可以通过在^{}中添加参数usecols,然后通过^{}聚合来简化解决方案:

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

相关问题 更多 >