python - 如何从每个csv的列值中删除逗号然后合并?
问题描述
我有多个要在某些列上合并的 CSV。但在此之前,我需要确保列值没有任何逗号。所以逗号应该用空格(" "
)代替。
所以我有一个包含 CSV 的文件夹。我能够加载它们并将它们合并到列town
和. 所以这就是我所做的city
state
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)
但是我如何将此步骤作为合并操作的一部分?
解决方案
我认为更好的是替换列表理解中的值以创建 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)