使用现有数据框架中的类似值创建新数据框架



所以我有一个电话记录的数据框(df1),大约有10k+行长,在同一天来自不同电话号码的呼叫,在不同的日子来自相同的电话号码。(df1示例)

<表类> 日期数量tbody><<tr>01/01/2022123456789101/01/2022123456789201/02/2022123456789101/02/2022123456789301/02/20221234567892

您可以从数据框中提取所有唯一的电话号码到列表中:

numbers = df['Number'].unique()

现在可以遍历该列表并提取每个电话号码的数据框。在这个例子中,我打印数据帧:

for number in numbers:
print(df[df['Number'] == number])

考虑以下使用.groupby的简单示例

import pandas as pd
df = pd.DataFrame({'user':['A','B','A','A','C'],'value':[5,4,3,2,1]})
grouped = df.groupby('user')
user_df = {}
for user in df.user.unique():
user_df[user] = grouped.get_group(user)

现在user_dfdict,有3个dataframe,每个用户1个,所以

print(user_df['A'])

给输出

user  value
0    A      5
2    A      3
3    A      2

print(user_df['B'])

给输出

user  value
1    B      4

print(user_df['C'])

给输出

user  value
4    C      1

如果每次循环需要处理1个用户,执行

import pandas as pd
df = pd.DataFrame({'user':['A','B','A','A','C'],'value':[5,4,3,2,1]})
grouped = df.groupby('user')
for user in df.user.unique():
user_df = grouped.get_group(user) # user_df is now pandas.DataFrame
print(user, user_df['value'].min(), user_df['value'].max())

给输出

A 2 5
B 4 4
C 1 1

最新更新