【发布时间】:2017-06-01 23:18:02
【问题描述】:
我正在尝试制作一个数据框,以便可以轻松地将其发送到 CSV,否则我必须手动执行此过程..
我希望这是我的最终输出。每个人都有从 2014 年 1 月 1 日到 2016 年 12 月 1 日的月份和年份组合:
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)
当我尝试循环创建数据框时,它要么不起作用,要么出现索引错误(由于不匹配的列表),我不知所措。
我进行了大量搜索,并找到了一些类似的以下链接,但我无法对工作进行逆向工程以适合我的情况。
Filling empty python dataframe using loops
How to build and fill pandas dataframe from for loop?
我不希望任何人觉得他们在“做我的功课”,所以如果我对一些简单的事情感到厌烦,请告诉我。
【问题讨论】:
-
append不是inplace进程,所以需要重新分配:df = df.append({'date': month}, ignore_index=True)。 -
@root 谢谢!这让我更接近,但仍然不是我需要的地方。通过重新分配,月份在最后一个列表名称(克里斯)之后。在
month循环之前添加此for index, row in df.iterrows():会有所帮助,但我该如何为每个人执行此操作?
标签: python python-3.x loops pandas dataframe