如何创建一个DataFrame的基本方法和使用的几种方法

目录

一,创建方法

.使用Pandas创建DataFrame:1

2.创建一个空的DataFrame: 需要调用DataFrame构造函数来创建DataFrame

3.用列表创建DataFrame,每个列表元素代表一行数据:

4.用字典创建DataFrame:

5.用csv文件读取数据创建DataFrame:

6.使用Series创建DataFrame:

7.元组创建的方式和列表比较类似:可以是单层元组,也可以进行嵌套。

单层元组创建:

元组的嵌套:

8.通过numpyndarray创建:

二、方法

在DataFrame数组中添加其他DataFrame数组——concat()函数:

DataFrame数组中列与列之间的运算:

两种删除列的方法——del 和pop():

del:

依然可以删除任意一列

 基本数据操作:增删改查

DataFrame轴的概念


前言:

       DataFrame是一种二维表格数据结构,类似于电子表格或SQL数据库中的数据表。它由多个列组成,每列可以包含不同类型的数据,如整数、浮点数、字符串等。DataFrame具有以下特点:-可以同时存储多个类型的数据。-行和列都有标签,方便数据的索引和操作。-提供了丰富的数据处理和分析函数。创建DataFrame在Python中,我们可以通过多种方式创建DataFrame对象

pandas.DataFrame()函数可以返回给定形状和数据类型的数据框,其主要参数如下:

data:表示数据,可以是ndarray数组、Series对象、列表、字典等。

index:表示行标签(索引)。

columns:列标签(索引)。

dtype:每一列数据的数据类型,其与Python数据类型有所不同,如object数据类型对应的是Python的字符型。

copy:用于复制数据

一,创建方法

.使用Pandas创建DataFrame:1

pandas.DataFrame(data,index,columns,dtype,copy)

2.创建一个空的DataFrame: 需要调用DataFrame构造函数来创建DataFrame

df = pd.DataFrame()

3.用列表创建DataFrame,每个列表元素代表一行数据:

data = [[4, 7, 10],

[5, 8, 11],

[6, 9, 12]]

df = pd.DataFrame(data, columns=['A', 'B', 'C'])

df

4.用字典创建DataFrame:

通过字典创建DataFrame,需要注意:字典中的value值只能是一维数组或单个的简单数据类型,如果是数组,要求所用数组长度一致;如果是单个数据,则每行都添加相同的数据。

merge_dt_dict = {'date':date_list,

'update':update_list,

'serverip':serverip_list}

data_df = DataFrame(merge_dt_dict)

5.用csv文件读取数据创建DataFrame:


import pandas as pd
 
# 从CSV文件创建DataFrame对象
filepath = "data.csv" # CSV文件路径
df_from_csv = pd.read_csv(filepath)
print("\nFrom CSV File:\n", df_from_csv)

6.使用Series创建DataFrame:

Series 简介。
Series是一维结构,由一组数据和一组与之相关的数据标签(索引)组成。序列结构只有行索引(row index),没有列名称(column name),但是序列有Name、dtype和index属性,其中Name属性是指序列的名称,dtype属性是指序列值的类型,index属性是序列的索引。
 

series = {'水果':Series(['苹果','梨','草莓']),
          '数量':Series([60,50,100]),
          '价格':Series([7,5,18])
         }

df15 = pd.DataFrame(series)
df15

7.元组创建的方式和列表比较类似:可以是单层元组,也可以进行嵌套。

单层元组创建:

# 单层元组

tup = ("小明","小红","小周","小孙")
df12 = pd.DataFrame(tup,columns=["姓名"])

df12

元组的嵌套:

# 嵌套元组

tup = (("小明","20","男"),
       ("小红","23","女"),
       ("小周","19","男"),
       ("小孙","28","男")
      )

df13 = pd.DataFrame(tup,columns=["姓名","年龄","性别"])
df13

8.通过numpyndarray创建:

arr=np.random.randn(6,4)

index_rows=pd.date_range('today',periods=6)

index_columns=['A','B','C','D']

dataframe1=

pd.DataFrame(arr,index=index_rows,columns=index_columns)

dataframe1

二、方法

在DataFrame数组中添加其他DataFrame数组——concat()函数:

chart = {
    "ID": ["1", "2", "3", "4", "5"],
    "name": ["abi", "baxi", "cine", "deker", "ebby"],
    "gender": [True, False, True, False, False],
    "age": [19, 10, 29, 19, 29],
    "score": [99, 40, 89, 70, 30]
}
finalChart = pd.DataFrame(chart)
 
bChat = {
    "height": [12, 13, 13, 14, 13]
}
bChat1 = pd.DataFrame(bChat)
 
# 以上创建两个DataFrame
'''axis=1'''
finalChart = pd.concat([finalChart, bChat1], axis=1)
print(finalChart)
'''
  ID   name  gender  age  score  height
0  1    abi    True   19     99      12
1  2   baxi   False   10     40      13
2  3   cine    True   29     89      13
3  4  deker   False   19     70      14
4  5   ebby   False   29     30      13
'''
 
finalChart = pd.concat([bChat1, finalChart], axis=1)
'''两个数组位置调换'''
print(finalChart)
'''
   height ID   name  gender  age  score
0      12  1    abi    True   19     99
1      13  2   baxi   False   10     40
2      13  3   cine    True   29     89
3      14  4  deker   False   19     70
4      13  5   ebby   False   29     30
'''

pandas里面也可以使用append(),不过会出现即将删除append()的提示,并建议使用concat(),可以认为这两个函数是相同的,但是,千万不要和numpy中的append()函数混淆!

DataFrame数组中列与列之间的运算:

加减乘除:(举两个例子:加法、求整数商)

dd = {'one': pd.Series([11, 22, 33, 99], index=[1, 2, 3, 4]),
      'two': pd.Series([55, 66, 7], index=[1, 2, 3], dtype=int)}
dc = pd.DataFrame(dd)
 
dc['three'] = pd.DataFrame([23, 4, 566, 88], index=[1, 2, 3, 4])
'''
   one   two  three
1   11  55.0     23
2   22  66.0      4
3   33   7.0    566
4   99   NaN     88
'''
 
'加法'
dc['four'] = dc['three'] + dc['two']
print(dc)
'''
   one   two  three   four
1   11  55.0     23   78.0
2   22  66.0      4   70.0
3   33   7.0    566  573.0
4   99   NaN     88    NaN
'''
 
'求整数商'
dc['four'] = dc['three'] // dc['two']
print(dc)
'''
   one   two  three  four
1   11  55.0     23   0.0
2   22  66.0      4   0.0
3   33   7.0    566  80.0
4   99   NaN     88   NaN
'''
 

两种删除列的方法——del 和pop():

del:

del dc['three']
print(dc)
'''
   one   two   four
1   11  55.0   78.0
2   22  66.0   70.0
3   33   7.0  573.0
4   99   NaN    NaN
'''


pop():

依然可以删除任意一列
dc.pop('two')  # 不需要赋值,直接在数组上进行运算,pop函数内传入的参数名就是列名。
print(dc)
'''
   one   four
1   11   78.0
2   22   70.0
3   33  573.0
4   99    NaN
'''
 基本数据操作:增删改查
df.columns
df.index
print(df.values)
print(7 in df.values)
# 获取DataFrame的所有列
columns = df.columns
# 获取特定列的数据
name_column = df['Name']
# 获取特定行的数据
row = df.loc[0]  # 使用标签索引
# 添加新列
df['Gender'] = ['F', 'M', 'M']
# 删除列
df = df.drop('Age', axis=1)
# 删除行
df = df.drop(0)
# 根据条件筛选数据
filtered_df = df[df['Age'] > 20]
 

DataFrame轴的概念

在DataFrame的处理中经常会遇到轴的概念,这里先给大家一个直观的印象,我们所说的axis=0即表示沿着每一列或行标签\索引值向下执行方法,axis=1即表示沿着每一行或者列标签模向执行对应的方法。

以上就是Python中创建Dataframe和使用的方法,有需要的可以直接套入使用。

<think>嗯,用户问的是如何将DataFrame中的几列复制到另一个DataFrame。首先,我需要确定用户使用的库,应该是pandas,因为DataFrame是pandas的核心数据结构。接下来,用户可能的情况可能有几种:直接复制列而不改变原数据,或者需要处理索引对齐问题,或者是深拷贝避免引用问题。 首先,我要考虑基本方法,比如使用df[['列名']]这样的语法来选取多列,然后赋值给新的DataFrame。这里要注意,如果直接赋值,可能会是视图,还是拷贝。可能需要提到.copy()方法,确保数据独立。 然后,用户可能不知道如何处理多个列,或者列名有特殊字符的情况,比如空格,这时候需要用.loc或者.iloc。另外,合并到现有DataFrame的情况,比如使用pd.concat或者join,但用户的问题可能更倾向于创建一个新的DataFrame,所以重点在选取列然后创建。 另外,可能存在的误区是直接赋值导致修改原数据,这时候需要提醒深拷贝的问题。例如,如果用户修改新DataFrame中的值,原DataFrame是否受影响,取决于是否是视图还是拷贝。 还要考虑不同情况下的代码示例,比如直接复制、使用copy方法、添加到已有DataFrame等。可能用户的需求不仅仅是复制,而是合并到另一个已有的DataFrame中,这时候需要concat或者merge的方法,但根据问题描述,主要是复制到另一个,所以可能分两种情况:创建新DF添加到现有DF。 需要结构清晰,步骤明确,给出示例代码,并解释每个步骤的作用。可能还需要提醒列名的一致性,或者如何处理索引的问题,特别是当两个DataFrame的索引不同时,如何正确合并。 总结下来,回答应该分几种情况:1)创建新DF;2)复制到现有DF;3)注意事项如深拷贝索引处理。然后每个情况给出示例解释,确保用户能理解不同方法的应用场景。</think>在Pandas中,将DataFrame的指定列复制到另一个DataFrame有以下几种典型方法,我们分步骤说明: --- ### 方法1:直接创建DataFrame ```python # 原始DataFrame df1 = pd.DataFrame({ 'A': [1, 2, 3], 'B': ['x', 'y', 'z'], 'C': [4.1, 5.2, 6.3] }) # 复制指定列到新DataFrame df2 = df1[['A', 'C']].copy() # 必须使用.copy()避免视图问题 ``` #### 关键点: - 使用双括号`[['列名']]`选择多列 - `.copy()`确保创建独立副本,否则新DF会与原始DF共享内存 --- ### 方法2:合并到现有DataFrame ```python # 目标DataFrame df_existing = pd.DataFrame({'D': [10, 20, 30]}) # 将df1的B列合并到现有DF df_existing['B'] = df1['B'].values # 使用.values避免索引对齐问题 # 或使用pd.concat横向拼接 df_combined = pd.concat([df_existing, df1[['A','C']]], axis=1) ``` #### 关键点: - 直接赋值需注意索引对齐,使用`.values`可忽略索引差异 - `pd.concat()`更适合复杂拼接场景 --- ### 方法3:条件筛选后复制 ```python # 仅复制满足条件的行中的列 df_filtered = df1[df1['A'] > 1][['B', 'C']].copy() ``` --- ### 注意事项 1. **深拷贝问题**:直接赋值`df2 = df1[['A']]`创建的是视图(view),修改df2会影响df1,必须用`.copy()`创建独立副本 2. **索引处理**:当两个DataFrame索引不一致时,推荐使用`.reset_index(drop=True)`重置索引 3. **内存优化**:大数据集应使用`astype()`明确指定数据类型 --- ### 完整示例 ```python import pandas as pd # 原始数据 df_source = pd.DataFrame({ 'ID': [101, 102, 103], 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'Salary': [50000, 60000, 70000] }) # 创建只包含姓名年龄的新DF df_new = df_source[['Name', 'Age']].copy() # 输出结果 print("原始DF:\n", df_source) print("\n新DF:\n", df_new) ``` 通过选择合适的方法,可以高效安全地实现列复制操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值