数据帧:
c_os_family_ss c_os_major_is l_customer_id_i
0 Windows 7 90418
1 Windows 7 90418
2 Windows 7 90418
Run Code Online (Sandbox Code Playgroud)
码:
print df
for name, group in df.groupby('l_customer_id_i').agg(lambda x: ','.join(x)):
print name
print group
Run Code Online (Sandbox Code Playgroud)
我试图循环聚合数据,但我收到错误:
ValueError:要解压缩的值太多
@EdChum,这是预期的输出:
c_os_family_ss \
l_customer_id_i
131572 Windows 7,Windows 7,Windows 7,Windows 7,Window...
135467 Windows 7,Windows 7,Windows 7,Windows 7,Window...
c_os_major_is
l_customer_id_i
131572 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
135467 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
Run Code Online (Sandbox Code Playgroud)
输出不是问题,我希望遍历每个组.
jor*_*ris 168
df.groupby('l_customer_id_i').agg(lambda x: ','.join(x)) 已经返回一个数据帧,因此您不能再遍历这些组.
一般来说:
df.groupby(...)返回一个GroupBy对象(DataFrameGroupBy或SeriesGroupBy),以及与此,您可以通过组循环(如文档解释这里).你可以这样做:
grouped = df.groupby('A')
for name, group in grouped:
...
Run Code Online (Sandbox Code Playgroud)当你在GROUPBY,在您的示例应用功能df.groupby(...).agg(...)(但是这也可以是transform,apply,mean,...),你结合的结果应用的功能,不同的群体集中在一个数据框(的应用中,并结合步groupby的'split-apply-combine'范例.因此,结果将始终是DataFrame(或取决于应用函数的系列).
And*_*ura 34
以下是pd.DataFrame按列分组的示例atable.对于示例用例,在for循环中生成SQL数据库的"create"语句:
import pandas as pd
df1 = pd.DataFrame({
'atable': ['Users', 'Users', 'Domains', 'Domains', 'Locks'],
'column': ['col_1', 'col_2', 'col_a', 'col_b', 'col'],
'column_type':['varchar', 'varchar', 'int', 'varchar', 'varchar'],
'is_null': ['No', 'No', 'Yes', 'No', 'Yes'],
})
df1_grouped = df1.groupby('atable')
# iterate over each group
for group_name, df_group in df1_grouped:
print('\nCREATE TABLE {}('.format(group_name))
for row_index, row in df_group.iterrows():
col = row['column']
column_type = row['column_type']
is_null = 'NOT NULL' if row['is_null'] == 'NO' else ''
print('\t{} {} {},'.format(col, column_type, is_null))
print(");")
Run Code Online (Sandbox Code Playgroud)
khi*_*ner 13
如果已创建数据框,则可以迭代索引值.
df = df.groupby('l_customer_id_i').agg(lambda x: ','.join(x))
for name in df.index:
print name
print df.loc[name]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132065 次 |
| 最近记录: |