【问题标题】:how to read a json in pandas dataframe and change one column value to uppercase and save the json file如何在 pandas 数据框中读取 json 并将一列值更改为大写并保存 json 文件
【发布时间】:2020-01-14 23:52:23
【问题描述】:

我正在尝试将 json 文件读入 pandas 数据帧。然后,我试图将一整列值转换为大写。 代码如下,

data = pd.read_json('demo1.json') 
print(data)
print(data[column].str.upper())
print(data)

输出如下,

          CITY FIRST_NAME  ID LAST_NAME          SSN
0      Waymill  Albertine   1       Jan  515-72-7353
1  Spellbridge   Maryetta   2      Hoyt  515-72-7354
2    Stoneland     Dustin   3    Divina  515-72-7355
3      Fayview      Jenna   4     Sofia  515-72-7356


0        WAYMILL
1    SPELLBRIDGE
2      STONELAND
3        FAYVIEW


Name: CITY, dtype: object
          CITY FIRST_NAME  ID LAST_NAME          SSN
0      Waymill  Albertine   1       Jan  515-72-7353
1  Spellbridge   Maryetta   2      Hoyt  515-72-7354
2    Stoneland     Dustin   3    Divina  515-72-7355
3      Fayview      Jenna   4     Sofia  515-72-7356

所以,我可以将值打印为大写,但是,整个数据框并没有改变。

需要一些指导。

【问题讨论】:

    标签: python json python-3.x pandas


    【解决方案1】:

    str.upper 函数的返回输出分配给具有相同名称的列以覆盖值,或分配给新名称以追加由大写值填充的新列:

    data['CITY'] = data['CITY'].str.upper()
    print (data)
              CITY FIRST_NAME  ID LAST_NAME          SSN
    0      WAYMILL  Albertine   1       Jan  515-72-7353
    1  SPELLBRIDGE   Maryetta   2      Hoyt  515-72-7354
    2    STONELAND     Dustin   3    Divina  515-72-7355
    3      FAYVIEW      Jenna   4     Sofia  515-72-7356
    

    data['NEW_CITY'] = data['CITY'].str.upper()
    print (data)
              CITY FIRST_NAME  ID LAST_NAME          SSN     NEW_CITY
    0      Waymill  Albertine   1       Jan  515-72-7353      WAYMILL
    1  Spellbridge   Maryetta   2      Hoyt  515-72-7354  SPELLBRIDGE
    2    Stoneland     Dustin   3    Divina  515-72-7355    STONELAND
    3      Fayview      Jenna   4     Sofia  515-72-7356      FAYVIEW
    

    编辑:

    如果需要 CITY 列到 DataFrames 列的末尾,请使用 DataFrame.pop 进行提取,然后分配给相同的列名:

    df['CITY'] = df.pop('CITY').str.upper()
    print (df)
      FIRST_NAME  ID LAST_NAME          SSN         CITY
    0  Albertine   1       Jan  515-72-7353      WAYMILL
    1   Maryetta   2      Hoyt  515-72-7354  SPELLBRIDGE
    2     Dustin   3    Divina  515-72-7355    STONELAND
    3      Jenna   4     Sofia  515-72-7356      FAYVIEW
    

    【讨论】:

    • 请查看我的输出结果。使用您的代码,列正在更改,但整个数据框没有更新。
    • @DebrajDas - 从您的示例数据中添加了输出,对我来说效果很好。
    • 那么如何用新列替换旧列.. 例如。如何用 NEW_CITY 替换 CITY?
    • @DebrajDas - 使用DataFrame.pop添加了更简单的解决方案
    • @DebrajDas - 你可以像列表一样传递新订单 - df = df[['ID', 'FIRST_NAME', 'LAST_NAME', 'CITY', 'SSN']]
    【解决方案2】:

    如果您需要创建一个新列并转换为大写字母,请尝试以下操作。

    DataFrame.assign() + str.upper()

    df = df.assign(NEW_CITY=data['CITY'].str.upper())
    

    如果您只想拥有NEW_CITY 并删除旧的CITY,那么您可以尝试..

    df = df.assign(NEW_CITY=data['CITY'].str.upper()).drop(columns=['CITY'])
    

    使用df.rename()保留列名

    df.rename(columns={'NEW_CITY':'CITY'}, inplace=True)
    

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 2021-08-22
      • 2021-12-28
      • 2022-01-16
      相关资源
      最近更新 更多