【问题标题】:How to remove comma from column values of each csv and then merge?如何从每个csv的列值中删除逗号然后合并?
【发布时间】:2020-02-18 06:06:44
【问题描述】:

我有多个要在某些列上合并的 CSV。但在此之前,我需要确保列值没有任何逗号。所以逗号应该换成空格(" ")。

所以我有一个包含 CSV 的文件夹。我能够加载它们并将它们合并到列towncitystate。所以这就是我所做的

os.chdir('/Users/cho/Downloads/census/')
dfs = [pd.read_csv(f) for f in os.listdir(os.getcwd()) if f.endswith('csv') 
df = reduce(lambda left,right: pd.merge(left,right,on=['town', 'city', 'state']), dfs)
df.to_csv('multicsv.csv', sep=',', encoding='utf-8', index=False)

但我还想包括将逗号替换为每列值的空格的附加操作。我知道我可以通过做类似的事情单独做到这一点

# I get the list of columns for each dataframe
cols = ['col1', 'col2', ..., 'colN']

# pass them to df.replace(), specifying each char and it's replacement:
df[cols] = df[cols].replace({'\$': '', ',': ''}, regex=True)

但是我如何将此步骤作为合并操作的一部分?

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    我认为更好的是替换列表理解中的值以创建 DataFrames dfs 列表:

    os.chdir('/Users/cho/Downloads/census/')
    
    cols = ['col1', 'col2', ..., 'colN']
    dfs = [pd.read_csv(f).replace({'\$': '', ',': ''}, regex=True) 
              for f in os.listdir(os.getcwd()) if f.endswith('csv')]
    
    df = reduce(lambda left,right: pd.merge(left,right,on=['town', 'city', 'state']), dfs)
    df.to_csv('multicsv.csv', sep=',', encoding='utf-8', index=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      相关资源
      最近更新 更多