【问题标题】:How to create a new csv file with only modified datas?(Pandas)如何创建仅包含修改数据的新 csv 文件?(熊猫)
【发布时间】:2021-04-16 02:16:24
【问题描述】:

我想创建一个仅包含修改数据的新 csv 文件。输入 csv 文件例如为

输入.csv

现在我想创建一个新的 csv 文件,仅包含修改后的数据,例如

条件是:

df1.loc[df1['Code'].astype(str).str.len() >12, 'Code']= '0'

我试过的是

import pandas as pd

df1 = pd.read_csv('input.csv')
df1.loc[df1['Code'].astype(str).str.len() >12, 'Code']= ''


df2 = df1.reindex(['ID','Name','Code','Changed Code'],axis=1)

在这种情况下如何为修改后的数据创建一个新的数据框?有什么建议或想法吗?

【问题讨论】:

    标签: python python-3.x pandas numpy csv


    【解决方案1】:

    这解决了我的问题。

    import pandas as pd
    
    df1 = pd.read_csv('input.csv')
    
    
    df2 = df1.loc[df1['Code'].astype(str).str.len() >12]
    df2 = df2.reindex(['Id','Name','Code','Changed Code'],axis=1)
    
    df2.loc[df2['Code'].astype(str).str.len() >12,'Changed Code']='0'
    df2
    

    【讨论】:

    • 您的解决方案显示了一些错误,因为 locs 不能与类似的列表一起使用。我参考了有条件地从您的解决方案中选择列。那行得通
    【解决方案2】:

    您可以使用列表中的列名称按条件更改选择行的代码并分配给新的DataFrame df2,也可以将dtype 参数添加到read_csv 以避免将列Code 转换为数字(和添加科学记数法):

    df1 = pd.read_csv('input.csv', dtype={'Code':str})
    
    #if need new column filled by 0
    df1['Changed Code'] = '0'
    df2 = df1.loc[df1['Code'].str.len() >12, ['ID','Name','Code','Changed Code']]
    

    如果不需要在 read_csv 中转换为字符串:

     df1 = pd.read_csv('input.csv')
     df2 = df1.loc[df1['Code'].astype(str).str.len() >12, ['ID','Name','Code','Changed Code']]
     df2['Changed Code'] = '0'
    

    【讨论】:

      猜你喜欢
      • 2023-01-12
      • 2015-05-30
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      相关资源
      最近更新 更多