【问题标题】:TypeError: read_json() got an unexpected keyword argument 'delimiter'TypeError:read_json() 得到了一个意外的关键字参数“分隔符”
【发布时间】:2021-12-13 17:02:54
【问题描述】:

我正在尝试在 Python 3 中(通过 Jupyter)分隔一个平面 json 文件,以便创建一个额外的列。 Pandas 自动读取并生成“...”之间的行。当我在没有分隔符的情况下打印时,它会很好地读取文件。这里是前四行:

0                             <h1>lorum ipsum|
1                              <h2>lorum ipsum|
2                                                     
3    <h5>lorum ipsum...

但是,每次 json 有文件 a > 时,我都想分隔一个额外的列,但是我收到一个我不理解的广泛错误。我做错了什么?

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-38-647ecd72fd56> in <module>
      1 import sys
      2 import pandas as pd
----> 3 df = pd.read_json('/filepath/doc.json' , delimiter='>', engine='python', header=None)
      4 print (df)

~/opt/anaconda3/lib/python3.8/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    197                 else:
    198                     kwargs[new_arg_name] = new_arg_value
--> 199             return func(*args, **kwargs)
    200 
    201         return cast(F, wrapper)

~/opt/anaconda3/lib/python3.8/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    297                 )
    298                 warnings.warn(msg, FutureWarning, stacklevel=stacklevel)
--> 299             return func(*args, **kwargs)
    300 
    301         return wrapper

TypeError: read_json() got an unexpected keyword argument 'delimiter'

产生错误的代码是:

import pandas as pd
df = pd.read_json('/path/file.json' , delimiter='>', engine='python', header=None)
print (df)

【问题讨论】:

  • documentation 概述了您可以与 pd.read_jsondelimiter 一起使用的参数,engineheader 不是其中之一。
  • 加载数据后需要拆分列。
  • 能否添加一个小样本 JSON 文件进行测试?

标签: python json pandas delimiter


【解决方案1】:

@罗恩

当然。它最初是一个pdf,我尽力将其刮成json。带有标题、子标题和段落。

["<h1>Amsterdam Circulair|", "<h2>leren door te doen|", "", "<h5>In 2 jaar met ruim 20 projecten in de praktijk laten zien dat het kan|", "<h5>2|", "", "<s1>Voorpagina:| Een medewerkster van Gro-Holland verzamelt de op koffieprut | gegroeide oesterzwammen, waarna zij naar de restaurants van La | Place gaan, de leverancier van de koffieprut. Foto: Olaf Kraak.| Bron: Trouw|", "", "<h2>Inhoud|", "", "<h5>Voorwoord| 4|", "<h5>1 | Inleiding | 6|", "<h5>2 |  Wat hebben het onderzoek en de marktconsultatie opgeleverd? | 7|", "", "<p>2.1  | Onderzoeksrapport Amsterdam Circulair | 7|", "<p>2.2 | Resultaat marktconsultatie | 7|", "<p>2.3 | Duurzaamheidsraad | 8|", "", "<h5>3 | Wat doen we al? | 9|", "<h5> 4 | Hoe gaan we verder? | 10|", "", "<p>4.1  | Inzet gemeente  | 10|", "<p>4.2 | Inzet 2016-2017 uitgewerkt | 12|", "<p>4.3 | Wat vragen we anderen | 18|", "", "<s1>4.3.1 | Rijk | 18|", "<s1>4.3.2 | Bedrijfsleven | 18|", "<s1>4.3.3 | Amsterdammers | 18|", "", "<h5>5 | Samengevat | 19|", "", "<p>Versie 16 november 2016|", "<h5>3|", "", "<h2>Voorwoord|", "", "<p>De transformatie van onze huidige economie naar een duurzame, circulaire economie is noodzakelijk en onontkoombaar. De | \u2018circulaire economie\u2019 is anno 2016 nog een toekomstbeeld. De vraag die nu voorligt is daarom: hoe moeilijk of makkelijk gaan we | het elkaar maken om dit toekomstbeeld om te zetten in realiteit?|", "<p>Vast staat dat de overheid niet kan bepalen dat \u2018de\u2019 economie maar circulair moet worden, maar dat ze een faciliterende en | stimulerende taak heeft. Juist bedrijven en instellingen moeten hun rol kunnen pakken in een economie in transitie.|", "<p>De bijdrage die de gemeente Amsterdam daarom op dit moment het beste kan leveren, is aantonen dat de circulaire economie | werkelijkheid kan worden. Dit gaan we doen door de komende twee jaar met twintig projecten te laten zien dat circulair werken | kan.

【讨论】:

    【解决方案2】:

    换句话说,这就是我的距离。

    import pandas as pd
    
    df = pd.read_json('filepath/doc.json')
    df.str.split(delimiter='>', expand=True)
    
    
    print (df)
    

    我收到错误:

    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-104-aaf69d70b64a> in <module>
          2 
          3 df = pd.read_json('filepath/doc.json')
    ----> 4 df.str.split(delimiter='>', expand=True)
          5 
          6 
    
    ~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in __getattr__(self, name)
       5463             if self._info_axis._can_hold_identifiers_and_holds_name(name):
       5464                 return self[name]
    -> 5465             return object.__getattribute__(self, name)
       5466 
       5467     def __setattr__(self, name: str, value) -> None:
    
    AttributeError: 'DataFrame' object has no attribute 'str'
    

    【讨论】:

      【解决方案3】:

      AttributeError:“DataFrame”对象没有属性“row”、“str”或“split”。三个都玩过。

      【讨论】:

        【解决方案4】:

        感谢您的两个建议。另一个奇怪的错误。这应该很容易。

        import pandas as pd
        
        df = pd.read_json('/file/doc.json')
        
        test = pd.DataFrame(df.row.str.split('>').tolist()
        
        ​print (test)
        

        错误:

         File "<ipython-input-49-0007a192a995>", line 7
            print (test)
            ^
        SyntaxError: invalid syntax
        

        【讨论】:

        • “test = ...”行缺少括号。
        • 我的错。修复。但我仍然收到错误消息:AttributeError: 'DataFrame' object has no attribute 'row'、'str' 或 'split'。三个人都玩过。
        猜你喜欢
        • 2019-02-01
        • 2021-06-04
        • 2016-09-17
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        • 2021-02-13
        相关资源
        最近更新 更多