python - 发现类型错误 : sequence item 3: expected string, float

标签 python pandas csv dataframe join

这是我的代码:

import pandas as pd

df1 = pd.read_csv("Book3.csv")
df2 = pd.read_csv("Book4.csv")
df2 = df2.dropna(axis=0)
g = df1.groupby('Attribute_spcName')['Char_spcValue'].apply(', '.join) #join attributes usin commas
df2['Char_spcValue'] = df2['Attribute_spcName'].map(g)
df2.rename(columns={
                 'Attribute_spcName': 'Attributes',
                 'Char_spcValue': 'Values'}, inplace=True)
df2 = df2[['Attributes', 'Values']]

df2.to_csv("AttributeHasValues.csv", index=False)

这是我的结果:

 TypeErrorTraceback (most recent call last)
    <ipython-input-1-91bb6ac8d567> in <module>()
          4 df2 = pd.read_csv("Book4.csv")
          5 df2 = df2.dropna(axis=0)
    ----> 6 g = df1.groupby('Attribute_spcName')['Char_spcValue'].apply(', '.join)
#join attributes usin commas
          7 df2['Char_spcValue'] = df2['Attribute_spcName'].map(g)
          8 df2.rename(columns={

    C:\Users\tt20172129\AppData\Local\Continuum\anaconda2\lib\site-packages\pandas\core\groupby.pyc in apply(self, func, *args, **kwargs)
        714         # ignore SettingWithCopy here in case the user mutates
        715         with option_context('mode.chained_assignment', None):
    --> 716             return self._python_apply_general(f)
        717 
        718     def _python_apply_general(self, f):

    C:\Users\tt20172129\AppData\Local\Continuum\anaconda2\lib\site-packages\pandas\core\groupby.pyc in _python_apply_general(self, f)
        718     def _python_apply_general(self, f):
        719         keys, values, mutated = self.grouper.apply(f, self._selected_obj,
    --> 720                                                    self.axis)
        721 
        722         return self._wrap_applied_output(

    C:\Users\tt20172129\AppData\Local\Continuum\anaconda2\lib\site-packages\pandas\core\groupby.pyc in apply(self, f, data, axis)
       1800             # group might be modified
       1801             group_axes = _get_axes(group)
    -> 1802             res = f(group)
       1803             if not _is_indexed_like(res, group_axes):
       1804                 mutated = True

    TypeError: sequence item 3: expected string, float found

如何解决这个问题?在我的 .xml 中,这些值是字符串。

最佳答案

IIUC 需要使用 lambda 函数转换为 string:

g=df1.groupby('Attribute_spcName')['Char_spcValue'].apply(lambda x: ', '.join(x.astype(str)))

关于python - 发现类型错误 : sequence item 3: expected string, float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49359266/

相关文章:

avro 的 Python 执行速度慢?

python - 在 Flask 工作线程之间共享可变数据

python - 使用 python pandas 读取已拆分为多行的行

python加入两个csv文件

python - 从 Pandas 数据框列中的对象中删除逗号

python - 用户输入选择类别然后循环

python - 尝试使用 pandas 进行 pytest 测试时出现 Keyerror

python - 使用 Pandas 计算每个组的唯一值

python - Pandas:从列表中选择包含任何子字符串的行

csv - Spark CSV 数据框加载,找不到文件