2017-08-11 46 views
0
BK = pd.DataFrame([], columns=(['Datetime','X','Y','Z'])) 

Time = 08082012 
A1 = 28.455 
B1 = 14.675 
C1 = 124.674 

# Assign first four values under 'Datetime','X','Y','Z' 
# Assign next values in a row under the first values 

Time = 09082012 
A1 = 28.923 
B1 = 14.122 
C1 = 123.158 

# Assign next values in a row under the second values 
Time = 10082012 
A1 = 27.923 
B1 = 15.122 
C1 = 127.158 

我们假设行数可以是无限的。 如何将变量分配到行之后的数据帧行中? 如果我一直覆盖变量,是否会出现异常?如何连续分配一个变量到一个数据帧行(熊猫)?

回答

0
BK = pd.DataFrame([], columns=(['Datetime','X','Y','Z'])) 
rows = [[Time],[A1],[B1],[C1]] 
BK.loc[len(BK)] = rows 

=

BK.loc[len(BK)]= [[Time],[A1],[B1],[C1]] 

易并且很快,特别是如果使用循环有些种类。

+0

你确定吗?在我看来,如果创建列表和数据框构造函数更快。你可以添加一些时间吗? – jezrael

+0

嗨jazrael,你只需要创建数据帧一旦它开始或之后,然后它将变量添加到行。在我写这篇评论的时候,可能还有可能将数据直接导向数据框。我必须弄清楚。 – Bondeaux

+0

我只认为最好的解决方案是创建列表和数据框,因为它是快速,简单和推荐的(就像Dov Grobgeld在他的回答中所说)。所以我很惊讶,你认为创建行数据到数据框很快 - 在我看来不是。还是缺少什​​么? – jezrael

0

我认为最好是建立嵌套列表(或元组的列表),然后分配给DataFrame构造:

#one possible solution for create nested list, try modify for real data 
L = [x for x in function_generate_rows()] 

#another possible solution 
L = [] 
for x in range(5): 
    row = function_generate_rows(x) 
    L.append(row) 

print (L) 
[[08082012,28.455,14.675,124.674],[09082012,28.923,14.122,123.158], ...] 

df = pd.DataFrame(L, columns = ['Datetime','X','Y','Z']) 
0

下也适用,但它可能是慢于先创建一个列表,并在最后把它变成一个数据帧(这是我平时做):

import pandas as pd 

BK = pd.DataFrame([], columns=(['Datetime','X','Y','Z'])) 

Time = 8082012 
A1 = 28.455 
B1 = 14.675 
C1 = 124.674 

BK=BK.append({'Datetime':Time,'X':A1,'Y':B1,'Z':C1}, ignore_index=True) 
# Assign first four values under 'Datetime','X','Y','Z' 
# Assign next values in a row under the first values 

Time = 9082012 
A1 = 28.923 
B1 = 14.122 
C1 = 123.158 
BK=BK.append({'Datetime':Time,'X':A1,'Y':B1,'Z':C1}, ignore_index=True) 

# Assign next values in a row under the second values 
Time = 10082012 
A1 = 27.923 
B1 = 15.122 
C1 = 127.158 
BK=BK.append({'Datetime':Time,'X':A1,'Y':B1,'Z':C1}, ignore_index=True) 

print BK 
相关问题