烟火气 发表于 2021-6-26 17:27:01

关于pands进行CSV文件的处理

CSV文件中若存在为0的数,则将其改为同一行前三个数的平均值,如果一列全部为零则不用考虑,想问下大佬这个该怎么实现{:10_254:}

Twilight6 发表于 2021-6-26 20:25:12

烟火气 发表于 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)

Twilight6 发表于 2021-6-26 17:29:39



你 CSV 文件的样式大致发下

烟火气 发表于 2021-6-26 17:42:38

Twilight6 发表于 2021-6-26 17:29
你 CSV 文件的样式大致发下

https://z3.ax1x.com/2021/06/26/RGZase.png

烟火气 发表于 2021-6-26 17:47:04

Twilight6 发表于 2021-6-26 17:29
你 CSV 文件的样式大致发下

https://z3.ax1x.com/2021/06/26/RGZxoR.png

Twilight6 发表于 2021-6-26 17:57:51

烟火气 发表于 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)

烟火气 发表于 2021-6-26 18:05:27

Twilight6 发表于 2021-6-26 17:29
你 CSV 文件的样式大致发下

https://imgtu.com/i/RGmLVJ https://imgtu.com/i/RGmbb4

烟火气 发表于 2021-6-26 18:06:16

Twilight6 发表于 2021-6-26 17:57


https://z3.ax1x.com/2021/06/26/RGmLVJ.png

烟火气 发表于 2021-6-26 18:07:01

Twilight6 发表于 2021-6-26 17:57


https://z3.ax1x.com/2021/06/26/RGmbb4.png

报错没太看懂

Twilight6 发表于 2021-6-26 18:11:54

烟火气 发表于 2021-6-26 18:07
报错没太看懂



没有找到文件,你文件路径、文件名需要填写正确,文件要后缀

阿奇_o 发表于 2021-6-26 18:24:57

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

烟火气 发表于 2021-6-26 20:12:55

Twilight6 发表于 2021-6-26 17:57


代码运行了一遍,发现并不能过滤掉一列全为0的数据

烟火气 发表于 2021-6-26 21:35:44

Twilight6 发表于 2021-6-26 20:25
这样呢:

这样就过滤了,感谢大佬解难

烟火气 发表于 2021-6-26 21:41:46

阿奇_o 发表于 2021-6-26 18:24


思路清晰,但是萌新没太看懂{:10_245:}

阿奇_o 发表于 2021-6-27 00:07:12

烟火气 发表于 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平均值

龙舞九天 发表于 2021-6-27 06:29:23

{:5_95:}
页: [1]
查看完整版本: 关于pands进行CSV文件的处理