Filling empty python dataframe using loops(使用循环填充空的python数据框)
问题描述
假设我想用循环中的值创建并填充一个空数据框.
Lets say I want to create and fill an empty dataframe with values from a loop.
import pandas as pd
import numpy as np
years = [2013, 2014, 2015]
dn=pd.DataFrame()
for year in years:
df1 = pd.DataFrame({'Incidents': [ 'C', 'B','A'],
year: [1, 1, 1 ],
}).set_index('Incidents')
print (df1)
dn=dn.append(df1, ignore_index = False)
即使忽略索引为假,追加也会给出对角矩阵:
The append gives a diagonal matrix even when ignore index is false:
>>> dn
2013 2014 2015
Incidents
C 1 NaN NaN
B 1 NaN NaN
A 1 NaN NaN
C NaN 1 NaN
B NaN 1 NaN
A NaN 1 NaN
C NaN NaN 1
B NaN NaN 1
A NaN NaN 1
[9 rows x 3 columns]
应该是这样的:
>>> dn
2013 2014 2015
Incidents
C 1 1 1
B 1 1 1
A 1 1 1
[3 rows x 3 columns]
有没有更好的方法来做到这一点?有没有办法修复附加?
Is there a better way of doing this? and is there a way to fix the append?
我有熊猫版本'0.13.1-557-g300610e'
I have pandas version '0.13.1-557-g300610e'
推荐答案
import pandas as pd
years = [2013, 2014, 2015]
dn = []
for year in years:
df1 = pd.DataFrame({'Incidents': [ 'C', 'B','A'],
year: [1, 1, 1 ],
}).set_index('Incidents')
dn.append(df1)
dn = pd.concat(dn, axis=1)
print(dn)
产量
2013 2014 2015
Incidents
C 1 1 1
B 1 1 1
A 1 1 1
<小时>
请注意,在循环外调用 pd.concat
once 更省时而不是在循环的每次迭代中调用 pd.concat
.
Note that calling pd.concat
once outside the loop is more time-efficient
than calling pd.concat
with each iteration of the loop.
每次调用 pd.concat
都会为新的 DataFrame 分配新空间,并且每个组件 DataFrame 中的所有数据都被复制到新的 DataFrame 中.如果你从 for 循环中调用 pd.concat
然后你最终在订单上做n**2
个副本,其中 n
是年数.
Each time you call pd.concat
new space is allocated for a new DataFrame, and
all the data from each component DataFrame is copied into the new DataFrame. If
you call pd.concat
from within the for-loop then you end up doing on the order
of n**2
copies, where n
is the number of years.
如果您将部分 DataFrames 累积在一个列表中并调用一次 pd.concat
在列表之外,那么 Pandas 只需要执行 n
个副本即可制作 dn
.
If you accumulate the partial DataFrames in a list and call pd.concat
once
outside the list, then Pandas only needs to perform n
copies to make dn
.
这篇关于使用循环填充空的python数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用循环填充空的python数据框
基础教程推荐
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 筛选NumPy数组 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01