关于pands进行CSV文件的处理
CSV文件中若存在为0的数,则将其改为同一行前三个数的平均值,如果一列全部为零则不用考虑,想问下大佬这个该怎么实现{:10_254:}烟火气 发表于 2021-6-26 20:12
代码运行了一遍,发现并不能过滤掉一列全为0的数据
这样呢:
import pandas as pd
df = pd.read_csv(你的文件)
key =
result = []
for i in df.values:
if 0 in i and set(i) != {0}:
avg = sum(i[:3])/3
for j in range(len(i)):
if df.keys() in key:
continue
elif i == 0:
i = avg
result.append(i)
new_df = pd.DataFrame(result)
new_df.columns = df.columns
new_df.to_csv('Result.csv', index=False)
你 CSV 文件的样式大致发下
Twilight6 发表于 2021-6-26 17:29
你 CSV 文件的样式大致发下
https://z3.ax1x.com/2021/06/26/RGZase.png Twilight6 发表于 2021-6-26 17:29
你 CSV 文件的样式大致发下
https://z3.ax1x.com/2021/06/26/RGZxoR.png 烟火气 发表于 2021-6-26 17:47
import pandas as pd
df = pd.read_csv(你的文件)
result = []
for i in df.values:
if 0 in i and set(i) != {0}:
avg = sum(i[:3])/3
for j in range(len(i)):
if i == 0:
i = avg
result.append(i)
new_df = pd.DataFrame(result)
new_df.columns = df.columns
new_df.to_csv('Result.csv', index=False) Twilight6 发表于 2021-6-26 17:29
你 CSV 文件的样式大致发下
https://imgtu.com/i/RGmLVJ https://imgtu.com/i/RGmbb4 Twilight6 发表于 2021-6-26 17:57
https://z3.ax1x.com/2021/06/26/RGmLVJ.png Twilight6 发表于 2021-6-26 17:57
https://z3.ax1x.com/2021/06/26/RGmbb4.png
报错没太看懂 烟火气 发表于 2021-6-26 18:07
报错没太看懂
没有找到文件,你文件路径、文件名需要填写正确,文件要后缀
import pandas as pd
df = pd.DataFrame({'A':, 'B':, 'C':, 'D':})# 仅示例(读取你csv,操作对应列即可)
# df
# 方法思路:
df[['A', 'B', 'C']]# 根据第四列是否0过滤出的需要的数据
df[['A', 'B', 'C']].mean(axis=1) # 对过滤出的数据求平均(横向)
# 两行搞定:
if df.D.sum() != 0:# 若第四列不全为0,则求各前三个数的平均
df.D = df[['A','B','C']].mean(axis=1)
df Twilight6 发表于 2021-6-26 17:57
代码运行了一遍,发现并不能过滤掉一列全为0的数据 Twilight6 发表于 2021-6-26 20:25
这样呢:
这样就过滤了,感谢大佬解难 阿奇_o 发表于 2021-6-26 18:24
思路清晰,但是萌新没太看懂{:10_245:} 烟火气 发表于 2021-6-26 21:41
思路清晰,但是萌新没太看懂
基本的过滤操作(如df)、
多列选取操作,单列修改值等操作,这看不懂,那我也没办法。。{:10_250:}
ps: df.D 即 df['D'] ;df['A'] 返回的是Series, df[ ['A'] ]返回的是 DataFrame;
.sum(), .mean()等统计函数,默认是"纵向"统计,即axis=0或axis='index';
当指定axis=1即“横向统计”,统计每行的sum和,或mean平均值 {:5_95:}
页:
[1]