目录
第二章(pandas)
Python从零开始第三章数据处理与分析python中的dplyr(1)
Python从零开始第三章数据处理与分析python中的dplyr(2)
Python从零开始第三章数据处理与分析python中的dplyr(3)
Python从零开始第三章数据处理与分析python中的dplyr(4)
===============================================
separate()
可以使用separate(column,into,sep =“[\ W _] +”,remove = True,convert = False,extra ='drop',fill ='right')
函数将列拆分为多个列。 separate()
有各种各样的参数:
column
:要拆分的列。
into
:新列的名称。
sep
:可以根据字符串或整数位置以拆分列。
remove
:指示是否删除原始列。
convert
:指示是否应将新列转换为适当的类型(与spread
above相同)。
extra
:指示对多余列的处理。可以选择丢弃,或者合并给最后一列。
fill
:可以是'right,要么在最右边的列中填充'np.nan
值来填充缺失的部分,也可以在left
中填充np.nan
值在最左边的列中填充。
print(d)
a
0 1-a-3
1 1-b
2 1-c-3-4
3 9-d-1
4 10
d >> separate(X.a, ['col1', 'col2'], remove=True, convert=True,
extra='drop', fill='right')
col1 col2
0 1 a
1 1 b
2 1 c
3 9 d
4 10 NaN
d >> separate(X.a, ['col1', 'col2'], remove=True, convert=True,
extra='drop', fill='left')
col1 col2
0 1.0 a
1 1.0 b
2 1.0 c
3 9.0 d
4 NaN 10
d >> separate(X.a, ['col1', 'col2'], remove=False, convert=True,
extra='merge', fill='right')
a col1 col2
0 1-a-3 1 a-3
1 1-b 1 b
2 1-c-3-4 1 c-3-4
3 9-d-1 9 d-1
4 10 10 NaN
d >> separate(X.a, ['col1', 'col2', 'col3'], sep=[2,4], remove=True, convert=True,
extra='merge', fill='right')
col1 col2 col3
0 1- a- 3
1 1- b NaN
2 1- c- 3-4
3 9- d- 1
4 10 NaN NaN
-
unite()
函数
unite(colname,* args,sep ='_',remove = True,na_action ='maintain')
函数与separate()
相反,通过分隔符将列连接在一起。 任何非字符串的列都将转换为字符串。 unite()
的参数是:
*colname
:新连接列的名称。
** args
:要连接的列的列表,可以是字符串,符号或列的整数位置。
*sep
:用于连接列的字符串分隔符。
*remove
:指示是否删除用于合并的原始列。
*na_action
:可以是maintain
(默认值),ignore
或”as_string
之一。 默认的maintain
将使新列行成为“NaN”值如果该行中的任何原始列单元格包含“NaN”。 ignore
会在加入时将任何NaN
值视为空字符串。 as_string
将在加入之前将任何NaN
值转换为字符串“nan“。
print(d)
a b c
0 1 a True
1 2 b False
2 3 c NaN
d >> unite('united', X.a, 'b', 2, remove=False, na_action='maintain')
a b c united
0 1 a True 1_a_True
1 2 b False 2_b_False
2 3 c NaN NaN
d >> unite('united', ['a','b','c'], remove=True, na_action='ignore', sep='*')
united
0 1*a*True
1 2*b*False
2 3*c
d >> unite('united', d.columns, remove=True, na_action='as_string')
united
0 1_a_True
1 2_b_False
2 3_c_nan
Joining
函数
1.internal_join(其他,by ='column')
*outer_join(其他,by ='column')
(与full_join()
的作用相同)
*right_join(其他,by ='column')
*left_join(其他,by ='column')
*semi_join(其他,by ='column')
*anti_join(其他,by ='column')
这些函数基本与R语言中类似。直接看例子就好
下面的示例DataFrame概述了连接函数的功能。
a = pd.DataFrame({
'x1':['A','B','C'],
'x2':[1,2,3]
})
b = pd.DataFrame({
'x1':['A','B','D'],
'x3':[True,False,True]
})
inner_join()
inner_join()
joins on values present in both DataFrames' by
columns.
a >> inner_join(b, by='x1')
x1 x2 x3
0 A 1 True
1 B 2 False
outer_join()
or full_join()
outer_join
merges DataFrame's together on values present in either frame's by
columns.
a >> outer_join(b, by='x1')
x1 x2 x3
0 A 1.0 True
1 B 2.0 False
2 C 3.0 NaN
3 D NaN True
left_join()
left_join
merges on the values present in the left DataFrame's by
columns.
a >> left_join(b, by='x1')
x1 x2 x3
0 A 1 True
1 B 2 False
2 C 3 NaN
right_join()
right_join
merges on the values present in the right DataFrame's by
columns.
a >> right_join(b, by='x1')
x1 x2 x3
0 A 1.0 True
1 B 2.0 False
2 D NaN True
semi_join()
semi_join()
returns all of the rows in the left DataFrame that have a match in the right DataFrame in the by
columns.
a >> semi_join(b, by='x1')
x1 x2
0 A 1
1 B 2
anti_join()
anti_join()
returns all of the rows in the left DataFrame that do not have a match in the right DataFrame within the by
columns.
a >> anti_join(b, by='x1')
x1 x2
2 C 3
Binding函数
dfply
同样有类似于pandas.concat()
这样在行和列上用于合并数据框的函数。 bind_rows(other, join='outer', ignore_index=False)
功能和 pandas.concat([df, other], join=join, ignore_index=ignore_index, axis=0)
一致,在竖直方向合并数据框.
a >> bind_rows(b, join='inner')
x1
0 A
1 B
2 C
0 A
1 B
2 D
a >> bind_rows(b, join='outer')
x1 x2 x3
0 A 1.0 NaN
1 B 2.0 NaN
2 C 3.0 NaN
0 A NaN True
1 B NaN False
2 D NaN True
请注意两个数据框的index。
bind_cols(other, join='outer', ignore_index=False)
类似于 pandas.concat([df, other], join=join, ignore_index=ignore_index, axis=1)
,在水平方向合并数据框.
a >> bind_cols(b)
x1 x2 x1 x3
0 A 1 A True
1 B 2 B False
2 C 3 D True