所以我有一个电话记录的数据框(df1),大约有10k+行长,在同一天来自不同电话号码的呼叫,在不同的日子来自相同的电话号码。(df1示例)
<表类>
日期数量 tbody><<tr>01/01/2022 1234567891 01/01/2022 1234567892 01/02/2022 1234567891 01/02/2022 1234567893 01/02/2022 1234567892 表类>
您可以从数据框中提取所有唯一的电话号码到列表中:
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_df
是dict
,有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