这个问题等价于如何对df的某个元素做处理,无论是比较,合并,判断,都要先把这个元素取出来,用itterrows函数来取,遍历每一行,用列名称来定位抓取你要比较的元素。
import os
import pandas as pd
import re
import math
import collections
import csv
df = pd.read_excel(r"C:\Users\Administrator\Desktop\比例.xlsx")
print(df)
for index, row in df.iterrows():
# count = row['比例']
# print(count)
print(row)
if float(row) >= 0.8:
# row['count'] = 1 #这样修改不了值
df.loc[index, '比例'] = 1 #如果是冒号第一循环就会把所有行的count全改变1。后边每行都是1也大于0所以对结果没影响
# 为如果行是2不是冒号那就只修改第2行的值为1,loc本来不就是遍历所有行么,那还要循环干啥??
# print(row) #??不是修改为1了么,为啥没变?
else:
df.loc[index, '比例'] = 0
print(df.loc[index,:])
print('-------------------------------------------------')
print(df)
#保存
df.to_csv(r"C:\Users\Administrator\Desktop\0101.csv",index=True)
上边的代码是如果大于0.8就输出1,下边的代码是如果大于0就把这个位置的元素修改为1
for index, row in df_zongbiao.iterrows():
count = row['count']
# print(count)
if int(count) > 0: #int是取整函数如int(0.226)就是0
# row['count'] = 1 #这样修改不了值
df_zongbiao.loc[index, 'count'] = 1 #如果是冒号第一循环就会把所有行的count全改变1。后边每行都是1也大于0所以对结果没影响
# 为如果行是2不是冒号那就只修改第2行的值为1,loc本来不就是遍历所有行么,那还要循环干啥??
# print(row) #??不是修改为1了么,为啥没变?
print(df_zongbiao.loc[index,:])
print('-------------------------------------------------')
print(df_zongbiao)
下边的代码为判断是不是0,如果是0就删除这一行,像这种判断的不仅可以使用itterrows还可以用loc函数
from pandas import DataFrame
import pandas as pd
df1 = pd.read_csv(r"C:\Users\Administrator\Desktop\间隔计算\秒\26235一周\2623566.csv", header=None)
df2 = df1.loc[(df1 == 0).all(axis=1), :] # 找到它
df3 = df1.loc[~(df1 == 0).all(axis=1), :] # 删了它
print(df1)
print(df3)
#保存
df3.to_csv(r"C:\Users\Administrator\Desktop\概率密度图像绘制\26235删除间隔零.csv",index=False)