- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章pandas数据筛选和csv操作的实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1. 数据筛选 。
1
2
3
4
5
6
7
8
9
10
11
|
a b c
0 0 2 4
1 6 8 10
2 12 14 16
3 18 20 22
4 24 26 28
5 30 32 34
6 36 38 40
7 42 44 46
8 48 50 52
9 54 56 58
|
(1)单条件筛选 。
1
2
3
4
5
|
df[df[
'a'
]>
30
]
# 如果想筛选a列的取值大于30的记录,但是之显示满足条件的b,c列的值可以这么写
df[[
'b'
,
'c'
]][df[
'a'
]>
30
]
# 使用isin函数根据特定值筛选记录。筛选a值等于30或者54的记录
df[df.a.isin([
30
,
54
])]
|
(2)多条件筛选 。
可以使用&(并)与| (或)操作符或者特定的函数实现多条件筛选 。
1
2
|
# 使用&筛选a列的取值大于30,b列的取值大于40的记录
df[(df[
'a'
] >
30
) & (df[
'b'
] >
40
)]
|
(3)索引筛选 。
a. 切片操作 。
df[行索引,列索引]或df[[列名1,列名2]] 。
1
2
3
4
|
#使用切片操作选择特定的行
df[
1
:
4
]
#传入列名选择特定的列
df[[
'a'
,
'c'
]]
|
b. loc函数 。
当每列已有column name时,用 df [ ‘a' ] 就能选取出一整列数据。如果你知道column names 和index,且两者都很好输入,可以选择 .loc同时进行行列选择.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
In [
28
]: df.loc[
0
,
'c'
]
Out[
28
]:
4
In [
29
]: df.loc[
1
:
4
,[
'a'
,
'c'
]]
Out[
29
]:
a c
1
6
10
2
12
16
3
18
22
4
24
28
In [
30
]: df.loc[[
1
,
3
,
5
],[
'a'
,
'c'
]]
Out[
30
]:
a c
1
6
10
3
18
22
5
30
34
|
c. iloc函数 。
如果column name太长,输入不方便,或者index是一列时间序列,更不好输入,那就可以选择 .iloc了,该方法接受列名的index,iloc 使得我们可以对column使用slice(切片)的方法对数据进行选取。这边的 i 我觉得代表index,比较好记点.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
In [
35
]: df.iloc[
0
,
2
]
Out[
35
]:
4
In [
34
]: df.iloc[
1
:
4
,[
0
,
2
]]
Out[
34
]:
a c
1
6
10
2
12
16
3
18
22
In [
36
]: df.iloc[[
1
,
3
,
5
],[
0
,
2
]]
Out[
36
]:
a c
1
6
10
3
18
22
5
30
34
In [
38
]: df.iloc[[
1
,
3
,
5
],
0
:
2
]
Out[
38
]:
a b
1
6
8
3
18
20
5
30
32
|
d. ix函数 。
ix的功能更加强大,参数既可以是索引,也可以是名称,相当于,loc和iloc的合体。需要注意的是在使用的时候需要统一,在行选择时同时出现索引和名称, 同样在同行选择时同时出现索引和名称.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
df.ix[
1
:
3
,[
'a'
,
'b'
]]
Out[
41
]:
a b
1
6
8
2
12
14
3
18
20
In [
42
]: df.ix[[
1
,
3
,
5
],[
'a'
,
'b'
]]
Out[
42
]:
a b
1
6
8
3
18
20
5
30
32
In [
45
]: df.ix[[
1
,
3
,
5
],[
0
,
2
]]
Out[
45
]:
a c
1
6
10
3
18
22
5
30
34
|
e. at函数 。
根据指定行index及列label,快速定位DataFrame的元素,选择列时仅支持列名.
1
2
|
In [
46
]: df.at[
3
,
'a'
]
Out[
46
]:
18
|
f. iat函数 。
与at的功能相同,只使用索引参数 。
1
2
|
In [
49
]: df.iat[
3
,
0
]
Out[
49
]:
18
|
2. csv操作 。
csv文件内容 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Supplier Name,Invoice Number,Part Number,Cost,Purchase Date
Supplier X,
001
-
1001
,
2341
,$
500.00
,
1
/
20
/
14
Supplier X,
001
-
1001
,
2341
,$
500.00
,
1
/
20
/
14
Supplier X,
001
-
1001
,
5467
,$
750.00
,
1
/
20
/
14
Supplier X,
001
-
1001
,
5467
,$
750.00
,
1
/
20
/
14
Supplier Y,
50
-
9501
,
7009
,$
250.00
,
1
/
30
/
14
Supplier Y,
50
-
9501
,
7009
,$
250.00
,
1
/
30
/
14
Supplier Y,
50
-
9505
,
6650
,$
125.00
,
2002
/
3
/
14
Supplier Y,
50
-
9505
,
6650
,$
125.00
,
2002
/
3
/
14
Supplier Z,
920
-
4803
,
3321
,$
615.00
,
2002
/
3
/
14
Supplier Z,
920
-
4804
,
3321
,$
615.00
,
2002
/
10
/
14
Supplier Z,
920
-
4805
,
3321
,$
615.00
,
2
/
17
/
14
Supplier Z,
920
-
4806
,
3321
,$
615.00
,
2
/
24
/
14
|
(1)csv文件读写 。
关于read_csv函数中的参数说明参考博客:http://www.zzvips.com/article/179603.html 。
1
2
3
4
5
|
import
pandas as pd
# 读写csv文件
df
=
pd.read_csv(
"supplier_data.csv"
)
df.to_csv(
"supplier_data_write.csv"
,index
=
None
)
|
(2)筛选特定的行 。
1
2
3
4
5
6
7
8
9
10
11
12
|
#Supplier Nmae列中姓名包含'Z',或者Cost列中的值大于600
print
(df[df[
"Supplier Name"
].
str
.contains(
'Z'
)])
print
(df[df[
'Cost'
].
str
.strip(
'$'
).astype(
float
) >
600
])
print
(df.loc[(df[
"Supplier Name"
].
str
.contains(
'Z'
))|(df[
'Cost'
].
str
.strip(
'$'
).astype(
float
) >
600.0
),:])
#行中的值属于某个集合
li
=
[
2341
,
6650
]
print
(df[df[
'Part Number'
].isin(li)])
print
(df.loc[df[
'Part Number'
].astype(
int
).isin(li),:])
#行中的值匹配某个模式
print
(df[df[
'Invoice Number'
].
str
.startswith(
"001-"
)])
|
(3)选取特定的列 。
1
2
3
4
5
6
7
|
#选取特定的列
#列索引值,打印1,3列
print
(df.iloc[:,
1
:
4
:
2
])
#列标题打印
print
(df.loc[:,[
"Invoice Number"
,
"Part Number"
]])
#选取连续的行
print
(df.loc[
1
:
4
,:])
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://www.cnblogs.com/xiaobingqianrui/p/9996177.html 。
最后此篇关于pandas数据筛选和csv操作的实现方法的文章就讲到这里了,如果你想了解更多关于pandas数据筛选和csv操作的实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
初学者 android 问题。好的,我已经成功写入文件。例如。 //获取文件名 String filename = getResources().getString(R.string.filename
我已经将相同的图像保存到/data/data/mypackage/img/中,现在我想显示这个全屏,我曾尝试使用 ACTION_VIEW 来显示 android 标准程序,但它不是从/data/dat
我正在使用Xcode 9,Swift 4。 我正在尝试使用以下代码从URL在ImageView中显示图像: func getImageFromUrl(sourceUrl: String) -> UII
我的 Ubuntu 安装 genymotion 有问题。主要是我无法调试我的数据库,因为通过 eclipse 中的 DBMS 和 shell 中的 adb 我无法查看/data/文件夹的内容。没有显示
我正在尝试用 PHP 发布一些 JSON 数据。但是出了点问题。 这是我的 html -- {% for x in sets %}
我观察到两种方法的结果不同。为什么是这样?我知道 lm 上发生了什么,但无法弄清楚 tslm 上发生了什么。 > library(forecast) > set.seed(2) > tts lm(t
我不确定为什么会这样!我有一个由 spring data elasticsearch 和 spring data jpa 使用的类,但是当我尝试运行我的应用程序时出现错误。 Error creatin
在 this vega 图表,如果我下载并转换 flare-dependencies.json使用以下 jq 到 csv命令, jq -r '(map(keys) | add | unique) as
我正在提交一个项目,我必须在其中创建一个带有表的 mysql 数据库。一切都在我这边进行,所以我只想检查如何将我所有的压缩文件发送给使用不同计算机的人。基本上,我如何为另一台计算机创建我的数据库文件,
我有一个应用程序可以将文本文件写入内部存储。我想仔细看看我的电脑。 我运行了 Toast.makeText 来显示路径,它说:/数据/数据/我的包 但是当我转到 Android Studio 的 An
我喜欢使用 Genymotion 模拟器以如此出色的速度加载 Android。它有非常好的速度,但仍然有一些不稳定的性能。 如何从 Eclipse 中的文件资源管理器访问 Genymotion 模拟器
我需要更改 Silverlight 中文本框的格式。数据通过 MVVM 绑定(bind)。 例如,有一个 int 属性,我将 1 添加到 setter 中的值并调用 OnPropertyChanged
我想向 Youtube Data API 提出请求,但我不需要访问任何用户信息。我只想浏览公共(public)视频并根据搜索词显示视频。 我可以在未经授权的情况下这样做吗? 最佳答案 YouTube
我已经设置了一个 Twilio 应用程序,我想向人们发送更新,但我不想回复单个文本。我只是想让他们在有问题时打电话。我一切正常,但我想在发送文本时显示传入文本,以确保我不会错过任何问题。我正在使用 p
我有一个带有表单的网站(目前它是纯 HTML,但我们正在切换到 JQuery)。流程是这样的: 接受用户的输入 --- 5 个整数 通过 REST 调用网络服务 在服务器端运行一些计算...并生成一个
假设我们有一个名为 configuration.js 的文件,当我们查看内部时,我们会看到: 'use strict'; var profile = { "project": "%Projec
这部分是对 Previous Question 的扩展我的: 我现在可以从我的 CI Controller 成功返回 JSON 数据,它返回: {"results":[{"id":"1","Sourc
有什么有效的方法可以删除 ios 中 CBL 的所有文档存储?我对此有疑问,或者,如果有人知道如何从本质上使该应用程序像刚刚安装一样,那也会非常有帮助。我们正在努力确保我们的注销实际上将应用程序设置为
我有一个 Rails 应用程序,它与其他 Rails 应用程序通信以进行数据插入。我使用 jQuery $.post 方法进行数据插入。对于插入,我的其他 Rails 应用程序显示 200 OK。但在
我正在为服务于发布请求的 API 调用运行单元测试。我正在传递请求正文,并且必须将响应作为帐户数据返回。但我只收到断言错误 注意:数据是从 Azure 中获取的 spec.js const accou
我是一名优秀的程序员,十分优秀!