【问题标题】:How to multiply many columns in a folder in pandas?如何在熊猫的文件夹中乘以多列?
【发布时间】:2020-02-04 08:41:02
【问题描述】:
我有一个包含许多文件的 CSV 文件夹。每个 csv 文件看起来像这样我想将文件夹中 csv 文件中的每一列乘以 2 倍?
***csv 1
Name Sales
0 Sam 250
0 Steve 500
0 Ann 600
csv 2***
Name Sales
0 Sam 250
0 Steve 300
0 Ann 400
想拥有这个
csv 1
Name Sales
0 Sam 500
0 Steve 1000
0 Ann 1200
csv 2***
Name Sales
0 Sam 500
0 Steve 600
0 Ann 800
【问题讨论】:
标签:
python
pandas
csv
data-science
【解决方案1】:
这就是你要找的吗?
df_paths = ['file1.csv', 'file2.csv']
df_lst = [pd.read_csv(_) for _ in df_paths]
for df in df_lst:
df['Sales']*=2
请注意,df['Sales']*=2 行会影响原始 DataFrame,而不是它们的副本。它们应该在 df_lst 的每个 DataFrame 中更新。
【解决方案2】:
这会有帮助!
basepath="<folder path>"
files = list(filter(lambda x: '.csv' in x, os.listdir(basepath)))
for file in files:
df = pd.read_csv(f"{basepath}/{file}")
df_ = df.drop(["Name"])
cols = df_.columns
df_[cols] =df_[cols].apply(pd.to_numeric, errors='coerce')
df_ = df_.multiply(2)
dfnew = pd.concat(df[df["Name"]],df_,axis=1)
dfnew.to_csv(f"{file}_n.csv")