【问题标题】:How to replace dataframes column value for all the csv files in a folder by other dataframe column value?如何用其他数据框列值替换文件夹中所有 csv 文件的数据框列值?
【发布时间】:2018-10-17 05:11:17
【问题描述】:

我有以下数据框 sheet1

Id  Snack      Price   
5   Orange      55    
7   Apple       53    
8   Muskmelon   33 

我有另一个数据框替换

 Snack        Cat
   Orange      a    
   Apple       b    
   Muskmelon   c

为了用其他列值替换列值,这是代码

sheet1['snack'] = sheet1['snack'].map(replace.set_index('Snack')['Cat'])

所以我会在上面的代码之后得到这个。

 Id  Snack      Price   
    5   a      55    
    7   b      53    
    8   c      33 

如何对文件夹中存在的所有 csv 表执行相同的操作。

输入:https://www.dropbox.com/sh/1mbgjtrr6t069w1/AADC3ZrRZf33QBil63m1mxz_a?dl=0

输出:将 Snack 列工作表值替换为文件夹中所有文件的替换数据框 cat 值。

【问题讨论】:

  • 所有的 csv 表会以什么格式存储?会有多少张(大约)?从您提供的链接那里只有两张纸 - sheet1 和 sheet2

标签: python pandas


【解决方案1】:

我相信您需要 glob 获取文件列表,然后循环并创建 DataFrame,map 并最后保存:

import glob

s = replace.set_index('Snack')['Cat']

for file in glob.glob('files/*.csv'):
    #df = pd.read_csv(file)
    df['Snack'] = df['Snack'].map(s)
    df.to_csv(f'{file}', index=False)

【讨论】:

  • @panda - 你能解释更多吗?
  • 文件中的Snack列值没有被替换
  • @panda - 真实文件是保密的吗?
  • 是的,如果它与这个示例数据一起工作,它应该可以工作,你可以尝试运行一次吗。
  • @panda - 您可以在print (replace['Snack'].dtype)print (df['Snack'].dtype) 中检查Snack 列ID 的dtypes 相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
相关资源
最近更新 更多