pandas相关问题

img


各位朋友,如何把上面表格的数字转变成下面的NaN呀?万分感谢!

题目应该是根据条件判断得到不同结果,可以直接用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',不晓得对是不对?😋

  通过观察,您上表第三列是第一列和第二列的积。我手写了前两列的数据csv文本。

img


  pandas.read_csv()读取文本并计算出arr3,准备好你的数据(上表)。

img


  通过比对,发现您上表小于10的值都'NaN'了,因而用轮询上表数据把小于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)

img


对您有帮助,请点击左边
“采纳该答案”

实际上就是找出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()进行替换即可