【问题标题】:difficuly in using merge function [duplicate]使用合并功能的困难[重复]
【发布时间】:2019-09-11 10:39:51
【问题描述】:

.merge() Pandas 函数出现语法错误。

我做错了什么,我该如何解决?

下面是我的代码的 sn-p;

df2 = df2.merge(df1[list('col1','col2'], on ='ABC')

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    您需要为此使用字符串格式:

    >>> for n in (9, 99, 999, 9999):
    ...     print(f"{n:0>4}")
    ... 
    0009
    0099
    0999
    9999
    

    【讨论】:

      【解决方案2】:

      str.zfill(x) 将在任何字符串前放置 x 个零

      如果您更愿意使用字符串格式,f'{str:0x}' 也可以。

      附:不要将字符串命名为 str,因为它会重载 str

      【讨论】:

      • 我认为这比字符串格式更 Pythonic,尤其是 C 风格的格式。
      • 我认为这不太可读。我确实更喜欢新的字符串格式样式而不是旧的“C 样式”。
      【解决方案3】:

      使用str.zfill(width)

      方法 zfill() 用零填充左侧的字符串以填充宽度。

      width - 这是字符串的最终宽度。这是我们的宽度 填零后会得到。

      id = [6, 77, 888, 9999]
      print([str(x).zfill(4) for x in id])
      

      输出

      ['0006', '0077', '0888', '9999']
      

      编辑

      使用列表理解转换列中的列值:

      import pandas as pd
      
      df = pd.DataFrame({'un-padded':[6, 77, 888, 9999]})
      df['padded'] = [str(x).zfill(4) for x in df['un-padded']]
      print(df)
      

      输出

         un-padded padded
      0          6   0006
      1         77   0077
      2        888   0888
      3       9999   9999
      

      【讨论】:

      • 我有一列包含数千个这样的 ID,需要使用 zfill() 插入一个新列。我该怎么做?
      • @Pradeep 为它添加了一个编辑 :)
      • 这是我的第一个 python 代码,所以我可能问得太傻了。使用 open('example.csv') 作为 csvfile 导入 csv:readCSV = csv.reader(csvfile, delimiter=',') 使用 open ('new_'+csvfile, 'w') 作为输出: writer = csv.writer( output, delimiter =',') writer.writerow(next(reader) + ['New-column'] 在此之后我需要使用 zfill 插入 xyz 列中的新值。你能帮我这样做吗?
      【解决方案4】:

      您必须将其视为字符串值,因为数值不能有前导零。要创建长度为 4 的 0 填充字符串,您可以这样做:

      v = 4
      print("{:04d}".format(v))
      

      或旧样式:

      v = 4
      print("%04d" % v)
      

      结果无论哪种方式:

      0004
      

      【讨论】:

        【解决方案5】:

        字符串格式化就是答案。

        print('%04d' % 4)
        0004
        print('%04d' % 43)
        0043
        

        【讨论】:

          猜你喜欢
          • 2011-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-07
          相关资源
          最近更新 更多