赞
踩
1 、筛选出数据的指定几行数据
data
=
df.loc[
2
:
5
]
#这里的[2:5]表示第3行到第5行内容,[]第一个起始是0,表示数据的第一行
2 、筛选出数据某列为某值的所有数据记录
data
=
df[(df[
'列名1'
]
=
=
‘列值
1
')]
# 多条件匹配时
data_many
=
df[(df[
'列名1'
]
=
=
‘列值
1
')&(df['
列名
2
']==‘列值2'
)]
# 多值匹配时
data_many
=
df[df[
'列名1'
]
in
[‘值
1
',‘值2'
,......]]
3 、模式匹配
# 开头包含某值的模式匹配
cond
=
df[
'列名'
].
str
.startswith(
'值'
)
$ 中间包含某值的模式匹配
cond
=
df[
'列名'
].
str
.contains(
'值'
)
4 、范围区间值筛选
# 筛选出基于两个值之间的数据:
cond
=
df[(df[
'列名1'
]>‘列值
1
')&(df['
列名
1
']<‘列值2'
)]
5、 获取某一行某一列的某个值
print
(ridership_df.loc[
'05-05-11'
,
'R003'
])
# 或者
print
(ridership_df.iloc[
4
,
0
])
# 结果:
1608
6 、获取原始的numpy二维数组
print
(df.values)
7、 根据条件得到某行元素所在的位置
import
pandas as pd
df
=
pd.DataFrame({
'BoolCol'
: [
1
,
2
,
3
,
3
,
4
],
'attr'
: [
22
,
33
,
22
,
44
,
66
]},index
=
[
10
,
20
,
30
,
40
,
50
])
print
(df)
a
=
df[(df.BoolCol
=
=
3
)&(df.attr
=
=
22
)].index.tolist()
b
=
df[(df.BoolCol
=
=
3
)&(df.attr
=
=
22
)].index[
0
]
c
=
df[(df.BoolCol
=
=
3
)&(df.attr
=
=
22
)].index.values
print
(a)
8、 元素位置筛选
print
(date_frame)
# 打印完整显示的效果
print
(date_frame.shape)
# 获取df的行数、列数元祖
print
(date_frame.head(
2
))
# 前2行
print
(date_frame.tail(
2
))
# 后2行
print
(date_frame.index.tolist())
# 只获取df的索引列表
print
(date_frame.columns.tolist())
# 只获取df的列名列表
print
(date_frame.values.tolist())
# 只获取df的所有值的列表(二维列表)
9、删除多行/多列
|
# 使用的前提是,dataframe的index和columns用的是数字,利用了drop()和range()函数。 DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise') # axis = 0,表示删除行; axis = 1 表示删除列。 # 想删除多行/列,用range即可,比如要删除前3行,drop(range(0,3),axis = 0(默认为零,可不写))即可。
import
datetime
import
pandas as pd
dictDate
=
{
'date'
: [
'2019-11-01 19:30'
,
'2019-11-30 19:00'
]}
df
=
pd.DataFrame(dictDate)
df[
'datetime'
]
=
pd.to_datetime(df[
'date'
])
df[
'today'
]
=
df[
'datetime'
].
apply
(
lambda
x: x.strftime(
'%Y%m%d'
))
df[
'tomorrow'
]
=
(df[
'datetime'
]
+
datetime.timedelta(days
=
1
)).dt.strftime(
'%Y%m%d'
)
11、 apply() 函数
# pandas 的 apply() 函数可以作用于 Series 或者整个 DataFrame,功能也是自动遍历整个 Series 或者 DataFrame, 对每一个元素运行指定的函数。
def
add_extra(nationality, extra):
if
nationality !
=
"汉"
:
return
extra
else
:
return
0
df[
'ExtraScore'
]
=
df.Nationality.
apply
(add_extra, args
=
(
5
,))
df[
'ExtraScore'
]
=
df.Nationality.
apply
(add_extra, extra
=
5
)
df[
'Extra'
]
=
df.Nationality.
apply
(
lambda
n, extra : extra
if
n
=
=
'汉'
else
0
, args
=
(
5
,))
def
add_extra2(nationaltiy,
*
*
kwargs):
return
kwargs[nationaltiy]
df[
'Extra'
]
=
df.Nationality.
apply
(add_extra2, 汉
=
0
, 回
=
10
, 藏
=
5
)
12、 map() 函数
import
datetime
import
pandas as pd
def
f(x):
x
=
str
(x)[:
8
]
if
x !
=
'n'
:
gf
=
datetime.datetime.strptime(x,
"%Y%m%d"
)
x
=
gf.strftime(
"%Y-%m-%d"
)
return
x
def
f2(x):
if
str
(x)
not
in
[
' '
,
'nan'
]:
dd
=
datetime.datetime.strptime(
str
(x),
"%Y/%m/%d"
)
x
=
dd.strftime(
"%Y-%m-%d"
)
return
x
def
test():
df
=
pd.DataFrame()
df1
=
pd.read_csv(
"600694_gf.csv"
)
df2
=
pd.read_csv(
"600694.csv"
)
df[
'date1'
]
=
df2[
'DateTime'
].
map
(f2)
df[
'date2'
]
=
df1[
'date'
].
map
(f)
df.to_csv(
'map.csv'
)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。