DataFrame基本操作 <三>

生成一个实例

df5 = DataFrame({'b': [4.3, 7, -3, 2],
                 'a': [0, 1, 0, 1],
                 'c': [-2, 5, 8, -2.5]})
print(df5)

运行结果

     b  a    c
0  4.3  0 -2.0
1  7.0  1  5.0
2 -3.0  0  8.0
3  2.0  1 -2.5

计算名次

print(df5.rank() )       # 按行计算名次
print(df5.rank(axis=1))  # 按列计算名次

#这有意思了,这是计算名次,显示的结果是名次,不是里边值的内容,只能用在f类型,df5.rank()是垂直方向比大小,竖着四个谁最大,显示的数字最大,最大4,最小1

#df5.rank(axis=1)就是水平方向比大小,三个 数字之间比,最大3,最小1

运行结果

     b  a    c
0  4.3  0 -2.0
1  7.0  1  5.0
2 -3.0  0  8.0
3  2.0  1 -2.5
#原本
     b    a    c
0  3.0  1.5  2.0
1  4.0  3.5  3.0
2  1.0  1.5  4.0
3  2.0  3.5  1.0
#竖着比,也就是垂直比,4个值
     b    a    c
0  3.0  2.0  1.0
1  3.0  1.0  2.0
2  1.0  2.0  3.0
3  3.0  2.0  1.0
#水平比,3个值

重新生成一个实例,观察这个实例的生成方法

df6 = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
                    'k2': [1, 1, 2, 3, 3, 4, 4]})

print(df6)

df7 = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
                    'k2': list('1123344')})

print(df6)
print(df7)
#以上两种方法,效果一样,但是结果不一样。。怎么理解那,上边的k2是int,下边的k2是str,我一开始错误的以为一样了,现在我们拿df6来举例

运行结果

    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
6  two   4   #就写一个行了

移除重复的数据

print(df6.drop_duplicates()) # 移除重复的行
print(df6.drop_duplicates(['k1'])) # 移除某列有重复的行
print(df6[::-1].drop_duplicates(['k1'])) # 反向移除

#这里讲究了,第一个是垂直移除,移除的条件是同时满足k1,k2的值都相等

#第二个是k1列只有重复的都移除

#第三个是垂直反向开始

运行结果

    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
6  two   4
#原版
    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
#移除了重复的行‘two 4’
    k1  k2
0  one   1
1  two   1
#k1 去掉重复的
    k1  k2
6  two   4
4  one   3
#反向开始 去掉k1重复的

数据替换

这里是根据‘name’(cols)替换的。

我觉得这个方法挺重要的以后能用的上,挺好的。

i={k1[0]:123,k1[1:456}

df['name].map(i) #

k3 = {'one': 2001, 'two': 2002}
df6['k3'] = df6['k1'].map(k3) # 根据已有的键值做转换
print(df6['k3'])
print(df6)
print(df6['k2'].replace([2, 4], 0)) # 替换特定的值
print(df6)


#第一个,k1里边有‘one’,‘two’,创建k3,用map方法

#第二个就是字面意思,k2里边的2,4替换成0

运行结果

    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
6  two   4
#原版
0    2001
1    2002
2    2001
3    2002
4    2001
5    2002
6    2002
Name: k3, dtype: int64
#k3的数据
    k1  k2    k3
0  one   1  2001
1  two   1  2002
2  one   2  2001
3  two   3  2002
4  one   3  2001
5  two   4  2002
6  two   4  2002
#现版
0    1
1    1
2    0
3    3
4    3
5    0
6    0
Name: k2, dtype: int64
#替换后的k2
    k1  k2    k3
0  one   1  2001
1  two   1  2002
2  one   2  2001
3  two   3  2002
4  one   3  2001
5  two   4  2002
6  two   4  2002
#请注意!!!这里如果你打印df6,还是上一版,k2的新值没有赋过来,也就是replace返回的结果是单独的。

那么如何将新产生的k2赋值给df6

print(df6.info())

猜你喜欢

转载自www.cnblogs.com/PYlog/p/9146016.html