Python 如何制作一个包含数据帧列表作为值的字典?

Python 如何制作一个包含数据帧列表作为值的字典?,python,pandas,dictionary,dataframe,Python,Pandas,Dictionary,Dataframe,我想把熊猫的数据帧放到字典里,而不是反过来 我尝试将数据帧块列表作为值放入字典中,Python返回一个错误,没有任何解释 以下是我想做的: 我将messenger聊天日志csv文件导入pandas数据框,并按日期将其拆分,然后将其全部放入列表中 现在,我想迭代这个列表,并将其进一步拆分:如果聊天停止超过15分钟,它将被拆分成块。我想把这些特定日期的聊天信息块列成另一个列表,然后把它们放在一个字典里,其中键是日期,值是这些聊天信息块的列表 然后Python突然返回一个错误。下面是我遇到的问题和返回

我想把熊猫的数据帧放到字典里,而不是反过来

我尝试将数据帧块列表作为值放入字典中,Python返回一个错误,没有任何解释

以下是我想做的:

我将messenger聊天日志csv文件导入pandas数据框,并按日期将其拆分,然后将其全部放入列表中

现在,我想迭代这个列表,并将其进一步拆分:如果聊天停止超过15分钟,它将被拆分成块。我想把这些特定日期的聊天信息块列成另一个列表,然后把它们放在一个字典里,其中键是日期,值是这些聊天信息块的列表

然后Python突然返回一个错误。下面是我遇到的问题和返回的错误

import pandas as pd
from datetime import datetime

# Get chatlog and turn it into Pandas Dataframe
ktlk_csv = pd.read_csv(r'''C:\Users\Jaepil\PycharmProjects\test_pycharm/5years.csv''', encoding="utf-8")
df = pd.DataFrame(ktlk_csv)

# Change "Date" column from String to DateTime 
df["Date"] = pd.to_datetime(df["Date"])

# Make a column "time_diff" which is literally diffences of timestamp between chats. 
df["time_diff"] = df["Date"].diff()
df["time_diff"] = df["time_diff"].dt.total_seconds()

# Criteria to split chat chunks 
chunk_tolerance = 900 # 900: 15min of silence splits a chat
chunk_min = 5 # a chat less than 5 min is not a chunk. 

# Split a chatlog by date. (1st split)
df_byDate = []
for group in df.groupby(lambda x: df["Date"][x].day):
    df_byDate.append(group)

# Iterate over the list of splitted chats and split them into many chunks
df_chunk = {}
for day in df_byDate:
    table = day[1]
    list_of_daily_chunks = []
    for group in table.groupby(lambda x: table["time_diff"][x] < chunk_tolerance ):
        list_of_daily_chunks.append(group)

    # It does NOT return any error up to this point. 

    key = table.loc[:, "Date"].dt.date[0].strftime("%Y-%m-%d")
    df_chunk[key] = list_of_daily_chunks
将熊猫作为pd导入
从日期时间导入日期时间
#获取聊天日志并将其转换为数据帧
ktlk_csv=pd.read_csv(r''C:\Users\Jaepil\pycharm项目\test_pycharm/5years.csv',encoding=“utf-8”)
df=pd.DataFrame(ktlk_csv)
#将“日期”列从字符串更改为日期时间
df[“日期”]=pd.to_datetime(df[“日期”])
#制作一个列“time_diff”,这是聊天之间时间戳的字面差异。
df[“时间差异”]=df[“日期”].diff()
df[“时间差”]=df[“时间差”].dt.总秒数()
#分割聊天区的条件
chunk_tolerance=900#900:15分钟的沉默会打断聊天
chunk_min=5#少于5分钟的聊天不是chunk。
#按日期拆分聊天日志。(第一部分)
df_byDate=[]
对于df.groupby(lambda x:df[“日期”][x].day]中的组:
df_byDate.append(组)
#迭代拆分的聊天列表,并将其拆分为多个区块
df_chunk={}
对于df_byDate中的日期:
表=天[1]
每日区块列表=[]
对于表.groupby中的组(lambda x:table[“time_diff”][x]
这将返回一个错误:

> C:/Users/Jaepil/pycharm项目/test_pycharm/PYNEER_KatalkBot_--u CSV_to_Chunk.py 回溯(最近一次呼叫最后一次): 文件“C:/Users/Jaepil/pycharm项目/test_pycharm/PYNEER_KatalkBot_u-_CSV_to_Chunk.py”,第32行,在 key=table.loc[:,“Date”].dt.Date[0]。strftime(“%Y-%m-%d”) 文件“C:\Users\Jaepil\Anaconda3\lib\site packages\pandas\core\series.py”,第601行,位于getitem 结果=self.index.get_值(self,key) 文件“C:\Users\Jaepil\Anaconda3\lib\site packages\pandas\core\index\base.py”,第2477行,在get\U值中 tz=getattr(series.dtype,'tz',无)) 文件“pandas_libs\index.pyx”,第98行,在pandas.\u libs.index.IndexEngine.get_值中(pandas_libs\index.c:4404) 文件“pandas_libs\index.pyx”,第106行,在pandas._libs.index.IndexEngine.get_值中(pandas_libs\index.c:4087) 文件“pandas_libs\index.pyx”,第154行,在pandas._libs.index.IndexEngine.get_loc中(pandas_libs\index.c:5126) pandas.\u libs.hashtable.Int64HashTable.get\u项(pandas\u libs\hashtable.c:14031)中第759行的文件“pandas\u libs\hashtable\u class\u helper.pxi” pandas.\u libs.hashtable.Int64HashTable.get\u项中的文件“pandas\libs\hashtable\u class\u helper.pxi”第765行(pandas\libs\hashtable.c:13975) 关键错误:0

我做错了什么? 起初,我得到一个错误,序列对象不能被散列,所以我把它改成了一个字符串。但是,现在出现了一个不同的错误


我认为您需要:

key = table.loc[:, "Date"].dt.date[0].strftime("%Y-%m-%d")
首先通过转换为字符串,然后通过选择第一个值:

或用于选择列位置的第一行
Date

key = table.iloc[0, df.columns.get_loc("Date")].strftime("%Y-%m-%d")

哇!怎么回事。。。。你是怎么做到的??????我不该用的。loc?但是为什么呢?这是什么呢。iat?
loc
在这里是不必要的,因为select column.key=table[“Date”].dt.iat[0]。strftime(“%Y-%m-%d”)-->不起作用。原始键=table[“Date”].dt.strftime(“%Y-%m-%d”).iat[0]-->有效。我可以再问一件事吗<代码>表
似乎是一个元组,它在[0]处有一个奇怪的值,在[1]处有一个所需的数据帧。[0]处的值是多少?Groupby做到了,但为什么呢?当然,您需要添加
i
,因为
Groupby
返回元组-组名与表类似
,表中的组。Groupby(lambda x:table[“time_diff”][x]
key = table.iloc[0, df.columns.get_loc("Date")].strftime("%Y-%m-%d")