题目应该是根据条件判断得到不同结果,可以直接用pandas 的 where 函数
import pandas as pd
data = {
'arr1':[1,3,5,7,9],
'arr2':[4,6,8,10,12],
'arr3':[4,18,40,70,108]
}
df = pd.DataFrame(data)
df.where(df>=9) # 当`cond`为True时,保留原值。其中False,用`other`中的相应值代替 other 默认 NAN
df.where(df>=9,other='none') # 当`cond`为True时,保留原值。否则,显示‘none’
```python
```
修改值不就行了,'NaN'不就是个字符串吗
至于到底为什么要把上面那些改成NaN,要根据上题结果,你上题又不发,不知道为什么要改
我也是个才学pandas的小白,通过轮询把您上表中小于9的值改写成了'NaN',不晓得对是不对?😋
#!/usr/bin/nve python
# coding: utf-8
import pandas as pd
df = pd.read_csv('/sdcard/Documents/nums.txt')
print(df)
df['arr3'] = df.arr1 * df.arr2
print(df)
'''
for i in range(5):
if df.arr1[i] < 9:
df.arr1[i] = 'NaN'
for i in range(5):
if df.arr2[i] < 9:
df.arr2[i] = 'NaN'
for i in range(5):
if df.arr3[i] < 9:
df.arr3[i] = 'NaN'
'''
df = df.where(df >= 9) # 前面三个for轮询,用这一句就够,输出完全符合要求。😋(从楼上“杨jun坚”学到where方法)。
print(df)
实际上就是找出dataframe中数值小于9的值将其置为NaN,代码如下,供你参考:
import pandas as pd
if __name__ == "__main__":
data = {
'arr1': [1, 3, 5, 7, 9],
'arr2': [4, 6, 8, 10, 12],
'arr3': [4, 18, 40, 70, 108]
}
df = pd.DataFrame(data)
df = df.where(df >= 9)
print(df)
可以定义一个掩码矩阵,然后用 df.where()进行替换即可