当前位置: 首页 > 知识库问答 >
问题:

熊猫从循环创建数据帧

甄鹏云
2023-03-14

我正在尝试制作一个数据帧,以便可以轻松地将其发送到CSV,否则我必须手动执行此过程。。

我希望这是我的最终输出。每个人都有一个月和年的组合,从2014年1月1日开始,一直到2016年1月12日:

      Name    date
0     ben     1/1/2014
1     ben     2/1/2014
2     ben     3/1/2014
3     ben     4/1/2014
....

12    dan     1/1/2014
13    dan     2/1/2014
14    dan     3/1/2014

到目前为止的代码:

import pandas as pd

days = [1]
months = list(range(1, 13))
years = ['2014', '2015', '2016']
listof_people = ['ben','dan','nathan', 'gary', 'Mark', 'Sean', 'Tim', 'Chris']

df = pd.DataFrame({"Name": listof_people})
for month in months:
    df.append({'date': month}, ignore_index=True)
print(df)

当我尝试循环创建数据帧时,它要么不工作,要么出现索引错误(因为不匹配列表),我不知所措。

我已经做了一点很好的搜索,并找到了以下一些类似的链接,但我不能反向工程的工作,以适应我的情况。

使用循环填充空python数据帧

如何从for循环构建和填充数据帧?

我不想让任何人觉得他们在“做我的作业”,所以如果我在做一些简单的事情,请让我知道。

共有2个答案

寿阳华
2023-03-14
mux = pd.MultiIndex.from_product(
    [listof_people, years, months],
    names=['Name', 'Year', 'Month'])

pd.Series(
    1, mux, name='Day'
).reset_index().assign(
    date=pd.to_datetime(df[['Year', 'Month', 'Day']])
)[['Name', 'date']]
施权
2023-03-14

我认为您可以将产品to_datetime组合用于列日期

from  itertools import product

days = [1]
months = list(range(1, 13))
years = ['2014', '2015', '2016']
listof_people = ['ben','dan','nathan', 'gary', 'Mark', 'Sean', 'Tim', 'Chris']

df1 = pd.DataFrame(list(product(listof_people, months, days, years)))
df1.columns = ['Name', 'month','day','year']
print (df1)
      Name  month  day  year
0      ben      1    1  2014
1      ben      1    1  2015
2      ben      1    1  2016
3      ben      2    1  2014
4      ben      2    1  2015
5      ben      2    1  2016
6      ben      3    1  2014
7      ben      3    1  2015
8      ben      3    1  2016
9      ben      4    1  2014
10     ben      4    1  2015
...
...
df1['date'] = pd.to_datetime(df1[['month','day','year']])
df1 = df1[['Name','date']]
print (df1)
      Name       date
0      ben 2014-01-01
1      ben 2015-01-01
2      ben 2016-01-01
3      ben 2014-02-01
4      ben 2015-02-01
5      ben 2016-02-01
6      ben 2014-03-01
7      ben 2015-03-01
...
...
 类似资料:
  • 我正在使用谷歌云视频智能API,我正在尝试将结果放入一个数据框中。API的输出类是repeatedcompositecontainer。因此,我的想法是在API函数中使用的for循环中构建一个数据帧。 以下是API函数处理结果的方式: 在这篇Stack Overflow文章的帮助下,我创建了一个空列表,并将结果附加到后面的数据框中,如下所示: 当我只尝试最后一个for循环时,它给了我一个很好的结构

  • 拿着字典: 我如何把这个字典变成一个数据框,其中的值是列?即。我想要一个数据框显示: 这种形式似乎根本得不到! 谢谢 这是一个不同的问题,另一个问题只是问如何将字典的值放入数据帧,我问的是如何获得我概述的特定形式

  • 我有一本字典的形式: 例如, 我想转换成熊猫数据帧与列1的用户名和其他列的电影评级,即: 但是,一些用户没有对电影进行评分,因此这些电影不包括在该用户键()的值()中。在这种情况下,只需用NaN填充条目就好了。 现在,我迭代键,填充列表,然后使用此列表创建数据帧: 但这只给了我一个用户的数据框,这些用户对片场中的所有电影都进行了评分。 我的目标是通过迭代电影标签(而不是上面显示的暴力方法)来追加到

  • 问题内容: 我终于从包含许多json对象的文件中获得了我需要的数据输出,但是当它在数据中循环时,我需要一些帮助将以下输出转换为单个数据帧。这是产生输出的代码,包括输出外观的示例: 原始数据: 运行上面的命令时,我将获得示例输出,我希望将其存储为3列的pandas数据框中。 因此,以下代码似乎更接近,因为如果我在列表中传递并转置df,它会给我一个时髦的df。关于如何正确调整此形状的任何想法吗? 数据

  • 我得到以下输出: 当我尝试使用Res_fs1、Res_fs2、Res_ps1、Res_ps2创建numppy数组时 我得到这个错误消息说键错误,虽然键存在:

  • 我最近从使用SQLite来满足大部分数据存储和管理需求过渡到使用MySQL。我想我终于安装了正确的库来使用Python3.6,但是现在我在从MySQL数据库中的dataframe创建新表时遇到了问题。 以下是我导入的库: 在我的代码中,我首先从CSV文件创建一个数据帧(这里没有问题)。 然后,我使用以下def函数建立到MySQL数据库的连接: 最后,我使用熊猫函数“to_sql”在MySQL数据库