访问 Pandas DataFrame 中的元素
程序员文章站
2022-06-05 20:09:22
...
我们可以使用行和列标签访问 DataFrame 的行、列或单个元素
import pandas as pd
# 创建一个字典列表
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
# 创建一个DataFrame并指定row index
store_items = pd.DataFrame(items2, index = ['store 1', 'store 2'])
# 输出这个DataFrame
print(store_items)
print()
# 通过标签访问行,列和元素
print('在每个store中有多少自行车:\n', store_items[['bikes']])
print()
print('在每个store中有多少自行车和短裤:\n', store_items[['bikes', 'pants']])
print()
print('在store 1中有什么条目:\n', store_items.loc[['store 1']])
print()
print('在Store 2中有多少自行车:', store_items['bikes']['store 2'])
输出:
bikes glasses pants watches
store 1 20 NaN 30 35
store 2 15 50.0 5 10
在每个store中有多少自行车:
bikes
store 1 20
store 2 15
在每个store中有多少自行车和短裤:
bikes pants
store 1 20 30
store 2 15 5
在store 1中有什么条目:
bikes glasses pants watches
store 1 20 NaN 30 35
在Store 2中有多少自行车: 15
注意:在访问 DataFrame 中的单个元素时,就像上个示例一样,必须始终提供标签,并且列标签在前,格式为 dataframe[column][row]
,如果先提供行标签,将出错。
通过添加行或列修改 DataFrame
- 我们向 store_items DataFrame 添加一个新列,表示每个商店的衬衫库存。我们来编写代码:
import pandas as pd
# 创建一个字典列表
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
# 创建一个DataFrame并指定row index
store_items = pd.DataFrame(items2, index = ['store 1', 'store 2'])
# 向store1中添加15个shirts, 向store2中添加2个shirts
store_items['shirts'] = [15,2]
# 显示修改过得 DataFrame
store_items
显示输出:
可以看出:当我们添加新的列时,新列添加到了 DataFrame 的末尾
下面,使用算术运算符向 DataFrame 中的其他列之间添加新列
import pandas as pd
# 创建一个字典列表
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
# 通过相加shirts和pants列,来创建一个称为suits的新列
store_items['suits'] = store_items['pants'] + store_items['shirts']
# 显示修改后的 DataFrame
store_items
输出:
向 DataFrame 中添加行
要向 DataFrame 中添加行,我们首先需要创建新的 Dataframe,然后将其附加到原始 DataFrame 上。
import pandas as pd
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
# 创建一个DataFrame并指定row index
store_items = pd.DataFrame(items2, index = ['store 1', 'store 2'])
# 创建一个包含一个字典的列表
new_items = [{'bikes': 20, 'pants': 30, 'watches': 35, 'glasses': 4}]
# 创建一个新的DataFrame并设标签为:store 3
new_store = pd.DataFrame(new_items, index = ['store 3'])
# 使用 .append() 方法将此行添加到 store_items DataFrame 中
store_items = store_items.append(new_store)
# 显示被修改的DataFrame
store_items
输出显示:
注意:将新行附加到 DataFrame 后,列按照字母顺序排序了。
使用特定列的特定行中的数据向 DataFrame 添加新的列
假设你想在store 2 和 3 中上一批新手表,并且新手表的数量与这些商店原有手表的库存一样
参照上面代码补充:
store_items['new watches'] = store_items['watches'][1:]
# 显示修改过得 DataFrame
store_items
显示:
-
dataframe.insert(loc,label,data)
方法使我们能够将新列(具有给定列标签和给定数据)插入 dataframe 的loc
位置
重用上述代码:
# 将名称为 shoes 的新列插入 suits 列前面。因为 suits 的数字索引值为 4,我们将此值作为 loc
store_items.insert(4, 'shoes', [8,5,0])
# 显示修改后的 DataFrame
store_items
显示:
要删除 DataFrame 中的行和列
- 使用
.pop()
和.drop()
方法。.pop()
方法仅允许我们删除列,而.drop()
方法可以同时用于删除行和列,只需使用关键字 axis 即可
重用上述代码:
# 删除new watches列
store_items.pop('new watches')
# 显示修改后的 DataFrame
store_items
显示:
# 删除 watches, shoes, pants 几列
store_items = store_items.drop(['watches', 'shoes', 'pants'], axis = 1)
# 显示修改后的 DataFrame
store_items
显示:
- 删除 store 2 and store 1 行
# 删除 store 2 and store 1 行
store_items = store_items.drop(['store 2', 'store 1'], axis = 0)
# 显示修改后的 DataFrame
store_items
显示:
- 我们可能需要更改行和列标签。我们使用
.rename()
方法将 bikes 列标签改为 hats
# 使用 .rename() 方法将 bikes 列标签改为 hats
store_items = store_items.rename(columns = {'bikes': 'hats'})
# 显示修改后的 DataFrame
store_items
显示:
- 也可以使用
.rename()
方法更改行标签
store_items = store_items.rename(index = {'store 3': 'store 1'})
# 显示修改后的 DataFrame
store_items
显示:
- 最后,也可以使用set_index将索引改为 DataFrame 中的某个列,这个不常用。https://blog.csdn.net/starter_____/article/details/79185054
上一篇: 如何判断是完全二叉树
推荐阅读
-
IE6、IE7中获取Button元素的值的bug说明_javascript技巧
-
独特设计!插图和手绘元素在网页设计中的使用_html/css_WEB-ITnose
-
使用Python将数组的元素导出到变量中(unpacking)
-
js中delete元素和splice元素的区别详解
-
CSS中的伪类与伪元素及二者间的区别说明
-
请教一个相当基础的问题,Java中为什么拥有类可以访问内部类的私有成员? JavaAccessSUN
-
在字符串资源文件中添加HTML元素,直接使用字符串资源,HTML元素没起作用的解决办法_html/css_WEB-ITnose
-
PHP中类属性与类静态变量的访问方法实例
-
详解angular中为HTML元素添加css类的几种方式
-
Apache中关于访问日志的配置