对DataFrame的各种处理太多太多。这里,只记录一点点,以便熟悉和记忆。利用where特性,去除特殊的行或赋值。利用lambda表达式和函数,更详细的处理行的情况。这些不仅仅对DataFrame操作,对其他对象该有该种行为的一样有效果。下边列出代码和输出。

# coding:UTF-8
import pandas as pd
import numpy as np

def tips(value):
    print  '\n', '\n'.join(['#'*72, value, '#'*72])

def trans_host(value):
    if value.name == 'kk':
        l = []
        for i in value:
            if i == 'www.itbld.com':
               i = 110
            elif i == 'www.vinixiu.com':
               i = 120
            elif i == 'www.qiubg.com':
               i = 119
            l.append(i)
        return pd.Series(l)
    return value

df = pd.DataFrame({
   "ii":np.random.randint(10, 50, 7),
   "jj":np.random.randint(50, 90, 7),
   "kk":[2331024, 'www.itbld.com', 2, 'www.qiubg.com',
'www.qiubg.com', 4, 6] }) df1 = df[df["kk"].str.len() >7] df2 = df.apply(lambda x: trans_host(x)) tips(u'原始的DataFrame。') print df tips(u'where实现。筛选出DataFrame中列中特殊的值。') print df1 tips(u'去除DataFrame中某列或某几列中有相同值的行。') df1 = df1.drop_duplicates(subset=['kk']) print df1 tips(u'利用lambda表达式和函数替换掉某行中的特殊存在的值。
注意参数的类型以及个数。
') print df2 tips(u'DataFrame中加入一列。被加入的列,如果列长度不够原来的,
则少的部分为NaN。如果比原来的长,超出的部分会被丢失掉
') s = pd.Series(data=[1, 2, 3, 4, 5]) df['ll'] = s print df tips(u'DataFrame中where功能的使用') df["kk"][df["kk"].str.len() > 7] = 123 print df

########################################################################
原始的DataFrame。
########################################################################
ii jj kk
0 27 77 2331024
1 15 54 www.itbld.com
2 26 82 2
3 27 71 www.qiubg.com
4 44 79 www.qiubg.com
5 33 70 4
6 48 84 6

########################################################################
筛选出DataFrame中列中特殊的值。
########################################################################
ii jj kk
1 15 54 www.itbld.com
3 27 71 www.qiubg.com
4 44 79 www.qiubg.com

########################################################################
去除DataFrame中某列或某几列中有相同值的行。
########################################################################
ii jj kk
1 15 54 www.itbld.com
3 27 71 www.qiubg.com

########################################################################
利用lambda表达式和函数替换掉某行中的特殊存在的值。注意参数的类型以及个数。
########################################################################
ii jj kk
0 27 77 2331024
1 15 54 110
2 26 82 2
3 27 71 119
4 44 79 119
5 33 70 4
6 48 84 6

########################################################################
DataFrame中加入一列。被加入的列,如果列长度不够原来的,则少的部分为NaN。如果比原来的长,超出的部分会被丢失掉
########################################################################
ii jj kk ll
0 27 77 2331024 1.0
1 15 54 www.itbld.com 2.0
2 26 82 2 3.0
3 27 71 www.qiubg.com 4.0
4 44 79 www.qiubg.com 5.0
5 33 70 4 NaN
6 48 84 6 NaN

########################################################################
DataFrame中where功能的使用
########################################################################
ii jj kk ll
0 27 77 2331024 1.0
1 15 54 123 2.0
2 26 82 2 3.0
3 27 71 123 4.0
4 44 79 123 5.0
5 33 70 4 NaN
6 48 84 6 NaN