【问题标题】:Copy data from CSV to another CSV and populate extra column based on condition将数据从 CSV 复制到另一个 CSV 并根据条件填充额外的列
【发布时间】:2017-01-23 13:44:11
【问题描述】:

输入:

Primary Key    Phone_No
1             9999999999  
2             999-999-9999 
3             024-999-8913

输出应该是:

Primary Key Phone_No  String/Number
1       9999999999       Number
2       999-999-9999     String
3       024-999-8913     String

我的 CSV 文件有 300 万条数据。

如果有人可以帮助我在 Pandas 中编码,将会很有帮助

【问题讨论】:

    标签: python pandas export-to-csv


    【解决方案1】:

    如果只有numericstring 值,我认为您可以将to_numericisnull 一起使用:

    mask = pd.to_numeric(df.Phone_No, errors='coerce').isnull()
    0    False
    1     True
    2     True
    Name: Phone_No, dtype: bool
    
    df['String/Number'] = np.where(mask, 'String','Number')
    print (df)
       Primary Key      Phone_No String/Number
    0            1    9999999999        Number
    1            2  999-999-9999        String
    2            3  024-999-8913        String
    

    【讨论】:

    • 还有一个条件,如果电话号码有“-”、“(”或“)”,则认为是号码。
    • 还有一个条件,如果电话号码有“-”、“(”或“)”,则认为是号码。
    【解决方案2】:

    您可以使用pandas.Series.str.isdigitnumpy.where

    >>> df['String/Number'] = np.where(df['Phone_No'].str.isdigit(), 'Number', 'String')
    >>> df
       PrimaryKey      Phone_No String/Number
    0           1    9999999999        Number
    1           2  999-999-9999        String
    2           3  024-999-8913        String
    

    【讨论】:

    • 还有一个条件,如果电话号码有“-”、“(”或“)”,则认为是号码。
    • 请相应地调整您的问题。
    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2021-04-01
    • 2015-11-21
    • 2022-01-04
    相关资源
    最近更新 更多