📜  拆分 pd 数据框 - Python (1)

📅  最后修改于: 2023-12-03 15:10:06.830000             🧑  作者: Mango

拆分 Pandas 数据框 - Python

Pandas 是 Python 中用于数据分析的重要库。在 Pandas 中,数据一般存储在数据框中,也称为 DataFrame。有时我们需要把数据框拆分成多个子集,并对其进行处理。这时候,我们可以使用 Pandas 提供的方法来完成这个任务。

按列拆分

我们可以按照指定的列对数据框进行拆分。具体代码如下:

import pandas as pd

# 创建数据框
data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Thomas'], 
        'Age': [28, 34, 29, 42, 25],
        'Country': ['US', 'UK', 'US', 'UK', 'US']}
df = pd.DataFrame(data)
print(df)

# 按照 Country 列进行拆分
grouped = df.groupby('Country')
for key, item in grouped:
    print(grouped.get_group(key), "\n")

输出结果:

     Name  Age Country
0     Tom   28      US
1    Jack   34      UK
2   Steve   29      US
3   Ricky   42      UK
4  Thomas   25      US

     Name  Age Country
0     Tom   28      US
2   Steve   29      US
4  Thomas   25      US 

    Name  Age Country
1   Jack   34      UK
3  Ricky   42      UK 

按行拆分

我们也可以按照指定的行数进行拆分。具体代码如下:

import pandas as pd

# 创建数据框
data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Thomas'], 
        'Age': [28, 34, 29, 42, 25],
        'Country': ['US', 'UK', 'US', 'UK', 'US']}
df = pd.DataFrame(data)
print(df)

# 按照指定行数进行拆分
n = 2
list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]
for item in list_df:
    print(item, "\n")

输出结果:

     Name  Age Country
0     Tom   28      US
1    Jack   34      UK
2   Steve   29      US
3   Ricky   42      UK
4  Thomas   25      US

    Name  Age Country
0    Tom   28      US
1   Jack   34      UK 

     Name  Age Country
2   Steve   29      US
3   Ricky   42      UK 

     Name  Age Country
4  Thomas   25      US 

按条件拆分

我们还可以按照指定条件对数据框进行拆分。具体代码如下:

import pandas as pd

# 创建数据框
data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky', 'Thomas'], 
        'Age': [28, 34, 29, 42, 25],
        'Country': ['US', 'UK', 'US', 'UK', 'US']}
df = pd.DataFrame(data)
print(df)

# 按照 Age 列的值是否大于等于 30 进行拆分
grouped = df.groupby(lambda x: True if df.loc[x, 'Age'] >= 30 else False)
for key, item in grouped:
    print(grouped.get_group(key), "\n")

输出结果:

     Name  Age Country
0     Tom   28      US
1    Jack   34      UK
2   Steve   29      US
3   Ricky   42      UK
4  Thomas   25      US

     Name  Age Country
1    Jack   34      UK
3   Ricky   42      UK 

     Name  Age Country
0     Tom   28      US
2   Steve   29      US
4  Thomas   25      US 

以上是拆分 Pandas 数据框的三种常见方法,可以根据实际情况选择合适的方法。