繁体   English   中英

从一个巨大的表中检索数据

[英]Retrieving data from a huge table

让我描述一下任务:每一列代表船(列的名称是船的名称,行是容器)。 船名的格式为 nn: xxxxxx (ttttttt)。 容器以 aa-bb-cccccccc/yyyy/xx@ddddddddd.ee 的形式表示,其中 bb 是容器的最终目的地的名称。 我的任务是计算最终目的地是日本的集装箱数量,所以我必须从集装箱表格中检索 bb 并计算它们。 我的想法是创建另一个表,该表将由 function 拆分(以“-”作为拆分标题)创建,然后在 bb 位于单元格中时只需添加 +1 即可对其进行计数。 这是一些代码:

import pandas as pd

df = pd.read_csv("dane.csv", sep=';')

shape = list(df.shape)
for i in range(0, shape[0]):
    for j in range(0, shape[1]):
        obj = df.iloc[i, j].split('-')

我得到这样的回溯:

DtypeWarning: Columns (0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,31,32,34,35,36,37,38,39,40,41,43,44,45,46,47,49,51,52,53,54,55,56,57,58) have mixed types. Specify dtype option on import or set low_memory=False.

'float' object has no attribute 'split'

我该如何改进它?

输入文件,第一列的前 5 行:

1: Brandenburg (Post-Panamax)
ES-NL-10633096/1938/X1@hkzydbezon.dk/6749
BE-BR-61613986/3551/B1@oqk.bf/39927
PH-SA-39552610/2436/A1@venagi.hr/80578
PA-AE-59814691/4881/X1@zhicvzvksl.cl/25247

有些单元格是空的。

让我们使用extract然后value_counts的正则表达式,您可以过滤结果以获得正确的目的地。

from io import StringIO

intxt = StringIO("""1: Brandenburg (Post-Panamax)
ES-NL-10633096/1938/X1@hkzydbezon.dk/6749
BE-BR-61613986/3551/B1@oqk.bf/39927
PH-SA-39552610/2436/A1@venagi.hr/80578
PA-AE-59814691/4881/X1@zhicvzvksl.cl/25247""")

df = pd.read_csv(intxt, names=['data'])

df['data'].str.extract('^[a-zA-z]{2}-([a-zA-Z]{2})')[0].value_counts()

Output:

AE    1
BR    1
SA    1
NL    1
Name: 0, dtype: int64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM