Pandas的DataFrame教程——指定位置增加删除一行一列

独家作者(csdn、掘金、知乎、微信公众号):PaperAgent
每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己

1、删除一行、一列

>>> df
   A  B  C  D
0  1  3  3  4
1  5  6  7  8
2  1  1  1  1
3  2  3  2  3

#删除A列,不改变原来的data数据,返回删除后的新表data_2。axis为1表示删除列,0表示删除行。inplace为True表示直接对原表修改。

>>> data_2 = df.drop('A',axis=1,inplace=False)    #删除列
>>> data_2
   B  C  D
0  3  3  4
1  6  7  8
2  1  1  1
3  3  2  3
>>> df.drop(0,axis=0,inplace=False)               #删除行
   A  B  C  D
1  5  6  7  8
2  1  1  1  1
3  2  3  2  3
>>>

2、指定位置增加行列

>>> df
   A  B  C   D
0  1  3  3   4
1  5  6  7   8
2  1  1  1   1
3  2  3  2   3
4  7  8  9  10
>>> df.insert(0,'E',[11,12,13,14,15])     #插入一列
>>> df
    E  A  B  C   D
0  11  1  3  3   4
1  12  5  6  7   8
2  13  1  1  1   1
3  14  2  3  2   3
4  15  7  8  9  10
>>> df
    E  A  B  C   D
0  11  1  3  3   4
1  12  5  6  7   8
2  13  1  1  1   1
3  14  2  3  2   3
4  15  7  8  9  10

df.insert(1,'调换',df.pop('A'))  #改变某一列的位置。如:先删除A列,然后在原表data中第1列插入被删掉的列。

>>> df
    E  调换  B  C   D
0  11   1  3  3   4
1  12   5  6  7   8
2  13   1  1  1   1
3  14   2  3  2   3
4  15   7  8  9  10
>>> df                   字典方式添加一行,append,忽略索引
   a  b  c  d
0  1  3  3  4
1  5  6  7  8
>>>
>>>
>>> row={'a':9,'b':10,'c':11,'d':12}
>>> df.append(row,ignore_index=True)
   a   b   c   d
0  1   3   3   4
1  5   6   7   8
2  9  10  11  12
>>>                      用loc指定位置添加一行
>>> df.loc[2]=[9,10,11,12]
>>> df
   a   b   c   d
0  1   3   3   4
1  5   6   7   8
2  9  10  11  12
>>>

2-1、 指定位置插入一行,索引非数字

>>> df = pd.DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]},index=['c','d','f'])
>>> df
   A  B
c  0  3
d  1  4
f  2  5
>>> df.loc['c']=['test','test']      ###指定位置插入一行
>>> df
      A     B
c  test  test
d     1     4
f     2     5


##########如果不想替换,可以参考如下方式
pd.DataFrame(np.insert(df.values, 0, values=[10, 10], axis=0))

还有其他方式,比如把df拆分成两个df,用append,然后在合并

3、按特定顺序,插入一行,保证索引按序排列

>>> df
    E  调换  B  C   D
0  11   1  3  3   4
1  12   5  6  7   8
2  13   1  1  1   1
3  14   2  3  2   3
4  15   7  8  9  10
>>>
>>> df.loc[5]=[9,9,9,9,9]                     #插入一行,按E列的顺序,升序
>>> df
    E  调换  B  C   D
0  11   1  3  3   4
1  12   5  6  7   8
2  13   1  1  1   1
3  14   2  3  2   3
4  15   7  8  9  10
5   9   9  9  9   9
>>> df.sort_values(by='E')                    #按E列排序
    E  调换  B  C   D
5   9   9  9  9   9
0  11   1  3  3   4
1  12   5  6  7   8
2  13   1  1  1   1
3  14   2  3  2   3
4  15   7  8  9  10
>>> df1=df.sort_values(by='E')
>>> df1.reset_index()                        #重置索引
   index   E  调换  B  C   D
0      5   9   9  9  9   9
1      0  11   1  3  3   4
2      1  12   5  6  7   8
3      2  13   1  1  1   1
4      3  14   2  3  2   3
5      4  15   7  8  9  10
>>> df2=df1.reset_index()
>>> del df2['index']
>>> df2                                      #删除掉原来的索引列index
    E  调换  B  C   D
0   9   9  9  9   9
1  11   1  3  3   4
2  12   5  6  7   8
3  13   1  1  1   1
4  14   2  3  2   3
5  15   7  8  9  10
>>>                                         

参考文献:

pandas学习:对series和dataframe进行排序: pandas学习:对series和dataframe进行排序_pandas frame 排序-优快云博客

Pandas set_index&reset_index : Pandas set_index&reset_index_pandas index重置 从1开始-优快云博客

### 如何使用 Pandas DataFrame 获取某一具体数据值 在 Pandas 中,可以通过多种方式获取 DataFrame 中的具体数据值。以下是几种常见的方法: #### 方法一:通过 `loc` 和条件筛选 如果需要基于某列的值找到对应的另一列的数据值,可以使用 `.loc` 结合布尔索引来完成此操作[^4]。例如,在给定的 DataFrame 中查找 `'a'` 列等于 12 的行,并提取 `'b'` 列的值。 ```python import pandas as pd data = [{'a': 12, 'b': 110}, {'a': 11, 'b': 10}, {'a': 12, 'b': 1}] df = pd.DataFrame(data) result = df.loc[df['a'] == 12, 'b'] print(result.values[0]) # 输出第一个满足条件的结果 ``` 这种方法适用于当您知道具体的筛选条件并希望返回对应列的一个或多个值时。 --- #### 方法二:通过 `iloc` 使用位置索引 如果您知道目标单元格的位置(行列索引),可以直接使用 `iloc` 来访问它[^4]。例如,要获取第 0 行、第 1 列的值: ```python value = df.iloc[0, 1] print(value) # 输出 110 ``` 这种方式适合于按照行列编号定位单个单元格的情况。 --- #### 方法三:利用 `query` 进行高级查询 对于更复杂的过滤逻辑,可以采用 `query` 方法来简化代码结构[^3]。比如,同样是为了找出 `'a'` 列为 12 对应的 `'b'` 值: ```python filtered_df = df.query('a == 12') first_value = filtered_df['b'].values[0] print(first_value) # 输出 110 ``` 注意这里我们假设只有一条记录符合条件;如果有多个,则需进一步处理结果集。 --- #### 方法四:直接取最后一列或者任意指定列的内容 假如不确定确切名称而只是想取得最后那栏的信息的话,也可以借助属性名列表来进行选取[^2]: ```python last_column_name = df.columns[-1] last_column_data = df[last_column_name] specific_cell = last_column_data.iloc[0] print(specific_cell) # 打印首项来自末端字段之数值。 ``` 以上展示了不同场景下怎样精确抓取出所需元素。 --- ### 总结 综上所述,依据实际需求可以选择最适合自己的途径去达成目的——无论是基础切片还是复杂表达式都能有效解决问题。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值