[英]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.