预期的字符串,int 在大文件上使用 pandas 数据帧时
Posted
技术标签:
【中文标题】预期的字符串,int 在大文件上使用 pandas 数据帧时【英文标题】:expected string, int found While using pandas dataframe on a large file 【发布时间】:2017-07-06 11:28:16 【问题描述】:我已经问过a question,但是当我对超过百万行的文件执行以下代码时遇到了问题。
代码:
import numpy as np
import pandas as pd
import xlrd
import xlsxwriter
df = pd.read_excel('full-cust-data-nonconcat.xlsx')
df =df.groupby('ORDER_ID')['ASIN'].agg(','.join).reset_index()
writer = pd.ExcelWriter('PythonExport-Data.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
print df
错误:
Traceback (most recent call last):
File "grouping-data.py", line 9, in <module>
df =df.groupby('ORDER_ID')['ASIN'].agg(','.join).reset_index()
File "/Library/Python/2.7/site-packages/pandas/core/groupby.py", line 2668, in aggregate
result = self._aggregate_named(func_or_funcs, *args, **kwargs)
File "/Library/Python/2.7/site-packages/pandas/core/groupby.py", line 2786, in _aggregate_named
output = func(group, *args, **kwargs)
TypeError: sequence item 0: expected string, int found
由于它是一个巨大的文件,我如何检查它在哪里找到字符串并获取 int?
有什么办法可以先把这些都转成字符串?
示例数据:(这些 id 是字母数字)
ID1 Some_other_id1
ID2 Some_other_id2
【问题讨论】:
【参考方案1】:您可以在agg
函数中编写一个 lambda 表达式来进行转换:
df.groupby('ORDER_ID')['ASIN'].agg(lambda x: ','.join(x.astype(str)).reset_index()
或者在聚合前转换数据类型:
df['ASIN'].astype(str).groupby(df['ORDER_ID']).agg(','.join).reset_index()
【讨论】:
感谢它的工作。但是,当我在另一个包含一个字符串列的文件上尝试它时,它会给出错误:文件“grouping-data.py”,第 11 行,在以上是关于预期的字符串,int 在大文件上使用 pandas 数据帧时的主要内容,如果未能解决你的问题,请参考以下文章
如何在 python pandas 或大查询上对多个列进行枢轴操作。最好在大查询上