【问题标题】:Collecting ids in separate dataframe在单独的数据框中收集 id
【发布时间】:2021-12-03 17:06:42
【问题描述】:

通过 id 对数据进行分组后,我陷入了困境。现在我想要 收集具有相同 ID 的完整信息。

Current => 我在使用 group by id 后得到了这个结果。 预期=>每个相同的 id 以及图片中显示的所有信息

dfs=pd.read_excel('tns1.xlsx')
grp = dfs.groupby('entity_id')
da  = grp.groups
for entity_id,show in grp:
  print(show)
  print(da)

现在我也有预期的输出,但问题是我正在正确提取它们然后使用下面的循环写入 excel 我试图提取但我不认为它正在正确提取除了它正在运行行数是那里的千倍

【问题讨论】:

  • 我们可以看看你到目前为止尝试过的代码吗?还要粘贴一些数据样本,这样有助于复现。
  • 例如,如果你想写入 csv,你可以在你的 for 循环中这样做 'show.to_csv(f'{entity_id}.csv')' ,它会为每个实体。
  • 只有当我把'show.to_csv(f'{entity_id}.csv')'这段代码放在循环中时,问题才来自循环,它会生成数千个文件,这些文件必须像一个文件一样出现带有任何分隔符或间隙。(整个数据)没有循环我无法提取分组数据,并且循环加载无限次

标签: python collections data-science analytics


【解决方案1】:

因此您可以收集单个数据以列出,然后将其写入 csv。

数据设置用于说明:

import pandas as pd
from io import StringIO
raw_data="""
entity_id,Name,Status,Date
2244,Abhi,Active,10-06-2021
2244,Abhi2,Blocked,10-06-2021
6666,other1,Blocked,10-06-2021
6666,other,Active,10-06-2021
"""
dfs=pd.read_csv(StringIO(raw_data))

将所有 dfs 追加到一个列表中:

grp = dfs.groupby('entity_id')
da  = grp.groups
groups_as_list=[]

for entity_id,show in grp:
    groups_as_list.append(show)# append all dfs in a list

然后将数据帧列表写入 csv。

with open("my_results.csv","w") as f:# open file for write
    for each_df in groups_as_list:
            each_df.to_csv(f,index=False)
            f.write("\n") # write empty line to csv

所以结果将如下所示:(您可以根据需要进一步调整)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多