팬더 DataFrame에 한 행 추가


868

팬더가 완전히 채워지도록 설계 DataFrame되었지만 빈 DataFrame을 만든 다음 행을 하나씩 추가 해야합니다 . 가장 좋은 방법은 무엇입니까?

빈 데이터 프레임을 성공적으로 만들었습니다.

res = DataFrame(columns=('lib', 'qty1', 'qty2'))

그런 다음 새 행을 추가하고 필드를 다음과 같이 채울 수 있습니다.

res = res.set_value(len(res), 'qty1', 10.0)

작동하지만 매우 이상해 보입니다 :-/ (문자열 값을 추가하지 못했습니다)

다른 열 유형으로 내 DataFrame에 새 행을 추가하려면 어떻게합니까?


70
이것은 큰 DataFrame을 빌드하는 데 매우 비효율적 인 방법입니다. 행을 추가 할 때 새 배열을 만들어야합니다 (기존 데이터를 복사).
Wes McKinney

5
@WesMcKinney : Thx, 정말 잘 알고 있습니다. 거대한 테이블 에 을 추가하는 것이 매우 빠릅 니까?
최대

4
너무 비효율적 인 경우 추가 행을 미리 할당 한 다음 업데이트 할 수 있습니다.
user1154664

답변:


568
>>> import pandas as pd
>>> from numpy.random import randint

>>> df = pd.DataFrame(columns=['lib', 'qty1', 'qty2'])
>>> for i in range(5):
>>>     df.loc[i] = ['name' + str(i)] + list(randint(10, size=2))

>>> df
     lib qty1 qty2
0  name0    3    3
1  name1    2    4
2  name2    2    8
3  name3    2    1
4  name4    9    6

25
메모리를 미리 할당하기 위해 인덱스를 추가하는 것을 고려하십시오 (내 답변 참조)
FooBar

34
@MaximG : 업그레이드를 강력히 권장합니다. 현재 Pandas 버전은 0.15.0입니다.
fred

44
.loc인덱스 열을 참조하고 있으므로 0에서 시작하는 연속적인 정수 시퀀스가 ​​아닌 인덱스로 기존의 DataFrame을 사용하는 경우 (예와 같이) .loc기존 행을 덮어 쓰거나 행을 삽입하거나 색인에 차이를 만듭니다. 길이가 0이 아닌 기존 데이터 프레임을 추가하기위한보다 강력하지만 완벽한 방법은 다음과 같습니다. df.loc[df.index.max() + 1] = [randint(...또는 @FooBar가 제안한대로 인덱스를 미리 채 웁니다.
호브

4
@hobs df.index.max()nanDataFrame이 비어있을 때입니다.
flow2k

4
@hobs 내가 생각한 한 가지 해결책은 삼항 연산자를 사용하는 것입니다.df.loc[0 if pd.isnull(df.index.max()) else df.index.max() + 1]
flow2k

474

데이터 프레임에 대한 모든 데이터를 미리 가져올 수있는 경우 데이터 프레임에 추가하는 것보다 훨씬 빠른 방법이 있습니다.

  1. 각 사전이 입력 데이터 행에 해당하는 사전 목록을 작성하십시오.
  2. 이 목록에서 데이터 프레임을 작성하십시오.

행 단위로 데이터 프레임을 추가하는 데 30 분이 걸리는 비슷한 작업이 있었고 몇 초 안에 완료 된 사전 목록에서 데이터 프레임을 작성했습니다.

rows_list = []
for row in input_rows:

        dict1 = {}
        # get input row in dictionary format
        # key = col_name
        dict1.update(blah..) 

        rows_list.append(dict1)

df = pd.DataFrame(rows_list)               

48
나는 모든 데이터를 미리 얻을 수없는 상황 에서이 작업을 수행했습니다. 속도 차이는 놀랍습니다.
fantabolous

47
판다 문서에서 복사 : It is worth noting however, that concat (and therefore append) makes a full copy of the data, and that constantly reusing this function can create a significant performance hit. If you need to use the operation over several datasets, use a list comprehension.( pandas.pydata.org/pandas-docs/stable/… )
thikonom

5
이것은 잘 작동합니다! 데이터 프레임을 만들 때를 제외하고 열 이름의 순서가 모두 잘못되었습니다.
user5359531

5
@ user5359531이 경우 주문 dict을 사용할 수 있습니다
ShikharDua

20
@ user5359531 열을 수동으로 지정하면 순서가 유지됩니다. pd.DataFrame (rows_list, columns = [ 'C1', 'C2', 'C3'])은 트릭을 수행합니다
Marcello Grechi Lins

288

당신은 사용할 수 있습니다 pandas.concat()또는 DataFrame.append(). 세부 사항 및 예제는 병합, 결합 및 연결을 참조하십시오 .


6
안녕하세요, append () 또는 concat ()을 사용하는 메소드에 대한 답은 무엇입니까? 나는 같은 문제가 있지만 여전히 알아 내려고 노력하고 있습니다.
notilas

109
이것은 정답이지만, 좋은 답변 은 아닙니다 (거의 링크 만 해당).
jwg

5
@fred의 대답이 더 정확하다고 생각합니다. IIUC는이 답변의 문제점은 행이 추가 될 때마다 전체 DataFrame을 불필요하게 복사한다는 것입니다. .loc특히 조심할 경우 피할 수있는 메커니즘을 사용하십시오 .
Ken Williams

7
그러나를 사용 DataFrame.append()하려면 먼저 행 데이터가 목록이 아닌 DataFrame인지 확인해야합니다.
StayFoolish

201

오랜 시간이 지났지 만 같은 문제에 직면했습니다. 그리고 여기에 흥미로운 답변이 많이 있습니다. 그래서 어떤 방법을 사용 해야할지 혼란 스러웠습니다.

데이터 프레임에 많은 행을 추가하는 경우 속도 성능에 관심 있습니다. 그래서 가장 인기있는 4 가지 방법을 시도하고 속도를 확인했습니다.

새 버전의 패키지를 사용하여 2019 년에 업데이트되었습니다 . @FooBar 주석 후에도 업데이트 됨

속도 성능

  1. .append 사용하기 ( NPE 's answer )
  2. .loc 사용하기 ( fred 's answer )
  3. 사전 할당과 함께 .loc 사용하기 ( FooBar 's answer )
  4. dict을 사용하고 결국 DataFrame을 생성하십시오 ( ShikharDua 's answer )

결과 (초) :

|------------|-------------|-------------|-------------|
|  Approach  |  1000 rows  |  5000 rows  | 10 000 rows |
|------------|-------------|-------------|-------------|
| .append    |    0.69     |    3.39     |    6.78     |
|------------|-------------|-------------|-------------|
| .loc w/o   |    0.74     |    3.90     |    8.35     |
| prealloc   |             |             |             |
|------------|-------------|-------------|-------------|
| .loc with  |    0.24     |    2.58     |    8.70     |
| prealloc   |             |             |             |
|------------|-------------|-------------|-------------|
|  dict      |    0.012    |   0.046     |   0.084     |
|------------|-------------|-------------|-------------|

유용한 의견 을 주신 @krassowski 덕분에 -코드를 업데이트했습니다.

그래서 나는 사전을 통해 덧셈을 사용합니다.


암호:

import pandas as pd
import numpy as np
import time

del df1, df2, df3, df4
numOfRows = 1000
# append
startTime = time.perf_counter()
df1 = pd.DataFrame(np.random.randint(100, size=(5,5)), columns=['A', 'B', 'C', 'D', 'E'])
for i in range( 1,numOfRows-4):
    df1 = df1.append( dict( (a,np.random.randint(100)) for a in ['A','B','C','D','E']), ignore_index=True)
print('Elapsed time: {:6.3f} seconds for {:d} rows'.format(time.perf_counter() - startTime, numOfRows))
print(df1.shape)

# .loc w/o prealloc
startTime = time.perf_counter()
df2 = pd.DataFrame(np.random.randint(100, size=(5,5)), columns=['A', 'B', 'C', 'D', 'E'])
for i in range( 1,numOfRows):
    df2.loc[i]  = np.random.randint(100, size=(1,5))[0]
print('Elapsed time: {:6.3f} seconds for {:d} rows'.format(time.perf_counter() - startTime, numOfRows))
print(df2.shape)

# .loc with prealloc
df3 = pd.DataFrame(index=np.arange(0, numOfRows), columns=['A', 'B', 'C', 'D', 'E'] )
startTime = time.perf_counter()
for i in range( 1,numOfRows):
    df3.loc[i]  = np.random.randint(100, size=(1,5))[0]
print('Elapsed time: {:6.3f} seconds for {:d} rows'.format(time.perf_counter() - startTime, numOfRows))
print(df3.shape)

# dict
startTime = time.perf_counter()
row_list = []
for i in range (0,5):
    row_list.append(dict( (a,np.random.randint(100)) for a in ['A','B','C','D','E']))
for i in range( 1,numOfRows-4):
    dict1 = dict( (a,np.random.randint(100)) for a in ['A','B','C','D','E'])
    row_list.append(dict1)

df4 = pd.DataFrame(row_list, columns=['A','B','C','D','E'])
print('Elapsed time: {:6.3f} seconds for {:d} rows'.format(time.perf_counter() - startTime, numOfRows))
print(df4.shape)

추신 : 나는 내 실현이 완벽하지 않으며 아마도 최적화가 있다고 생각합니다.


4
df2.index.max()for를 사용 .loc하면 계산 복잡성이 불필요하게 증가합니다. 간단합니다 df2.loc[i] = .... 나를 위해 시간을 10 초에서 8.64 초로 줄였습니다
krassowski

테스트에서 내 접근법을 따르지 않기 때문에 목록에서 내 이름을 제거하십시오. 적절한 크기의 색인을 제공하여 메모리를 사전 할당하지 않습니다.
FooBar

@FooBar 안녕! 저자가 내 대답을 보았을 때 기쁘다. :) 네가 옳다.이 중요한 요점을 놓쳤다. 접근 방식에 따라 다른 결과가 표시되므로 결과 테이블에 행을 하나 더 추가하는 것이 좋습니다!
Mikhail_Sam

@Mikhail_Sam 피벗 테이블을 사용하여 가장 빠른 방법 인 dict?
FabioSpaghetti

1
Dict to Pandas DataFrame이 더 나은 방법 인 이유에 대해 다른 의견을 던지기를 원했습니다. 테이블에 여러 다른 데이터 유형이있는 데이터 세트를 사용한 실험에서 Pandas 추가 메소드를 사용하면 타이핑을 파괴하는 반면 Dict를 사용하고 그로부터 DataFrame 만 작성하면 원래 데이터 유형이 그대로 유지되는 것으로 보입니다.
trumpetlicks

109

사전에 입력 한 항목 수를 알고 있으면 인덱스를 제공하여 공간을 미리 할당해야합니다 (다른 답변에서 데이터 예제를 가져옴).

import pandas as pd
import numpy as np
# we know we're gonna have 5 rows of data
numberOfRows = 5
# create dataframe
df = pd.DataFrame(index=np.arange(0, numberOfRows), columns=('lib', 'qty1', 'qty2') )

# now fill it up row by row
for x in np.arange(0, numberOfRows):
    #loc or iloc both work here since the index is natural numbers
    df.loc[x] = [np.random.randint(-1,1) for n in range(3)]
In[23]: df
Out[23]: 
   lib  qty1  qty2
0   -1    -1    -1
1    0     0     0
2   -1     0    -1
3    0    -1     0
4   -1     0     0

속도 비교

In[30]: %timeit tryThis() # function wrapper for this answer
In[31]: %timeit tryOther() # function wrapper without index (see, for example, @fred)
1000 loops, best of 3: 1.23 ms per loop
100 loops, best of 3: 2.31 ms per loop

그리고 주석에서와 같이 크기가 6000 인 경우 속도 차이가 훨씬 커집니다.

어레이 (12) 및 행 수 (500)의 크기를 늘리면 속도 차이가 더욱 두드러집니다. 313ms 대 2.29s


3
좋은 대답입니다. 행 공간이 증분으로 할당 될 필요가 없도록 이것은 표준이어야합니다.
ely

8
어레이 (12)와 행 수 (500)의 크기를 늘리면 속도 차이가 더욱 두드러집니다. 313ms vs 2.29s
Tickon

80
mycolumns = ['A', 'B']
df = pd.DataFrame(columns=mycolumns)
rows = [[1,2],[3,4],[5,6]]
for row in rows:
    df.loc[len(df)] = row

2
이! 나는 꽤 오랫동안 찾고 있었고, 이것은 실제로 특정 값을 행에 할당하는 방법을 보여주는 첫 번째 게시물입니다! 보너스 질문 : 열 이름 / 값 쌍의 구문은 무엇입니까? 나는 그것이 dict를 사용하는 것이 틀림 없다고 생각하지만, 제대로 이해하지 못하는 것 같습니다.
jhin

3
확장 할 때 실제로 전체 DataFrame을 복사하므로 효율적이지 않습니다.
방수

72

효율적으로 추가하려면 팬더 데이터 프레임에 추가 행을 추가하는 방법확대 설정 참조하십시오 .

를 통해 행을 추가 loc/ix비 기존의 키 인덱스 데이터. 예 :

In [1]: se = pd.Series([1,2,3])

In [2]: se
Out[2]: 
0    1
1    2
2    3
dtype: int64

In [3]: se[5] = 5.

In [4]: se
Out[4]: 
0    1.0
1    2.0
2    3.0
5    5.0
dtype: float64

또는:

In [1]: dfi = pd.DataFrame(np.arange(6).reshape(3,2),
   .....:                 columns=['A','B'])
   .....: 

In [2]: dfi
Out[2]: 
   A  B
0  0  1
1  2  3
2  4  5

In [3]: dfi.loc[:,'C'] = dfi.loc[:,'A']

In [4]: dfi
Out[4]: 
   A  B  C
0  0  1  0
1  2  3  2
2  4  5  4
In [5]: dfi.loc[3] = 5

In [6]: dfi
Out[6]: 
   A  B  C
0  0  1  0
1  2  3  2
2  4  5  4
3  5  5  5

사용자가 구현을 요청했습니다 (새 행 추가). 여기에서는 정의 된 인덱스에 행을 추가하거나 열을 추가하는 방법을 살펴 봅니다.
Guilherme Felipe Reis

1
dict 방법과 비교하여 이것이 어떻게 작동하는지에 대한 벤치 마크
PirateApp

실제로 전체 DataFrame을 복사하므로 효율적이지 않습니다.
방수

66

ignore_index옵션을 사용하여 단일 행을 사전으로 추가 할 수 있습니다 .

>>> f = pandas.DataFrame(data = {'Animal':['cow','horse'], 'Color':['blue', 'red']})
>>> f
  Animal Color
0    cow  blue
1  horse   red
>>> f.append({'Animal':'mouse', 'Color':'black'}, ignore_index=True)
  Animal  Color
0    cow   blue
1  horse    red
2  mouse  black

37
f.append(<stuff>)현재 개체에 단순히 추가하는 대신 새 개체 를 생성 한다고 언급 할 수도 있습니다 . 따라서 스크립트의 데이터 프레임에 추가하려는 경우f = f.append(<stuff>)
Blairg23

2
이를 수행하는 방법이 있습니까?
lol

@하하 싫어. github.com/pandas-dev/pandas/issues/2801 참조 -기본 배열은 확장 할 수 없으므로 복사해야합니다.
방수

46

파이썬 방식으로 여기에 내 대답을 추가하십시오.

res = pd.DataFrame(columns=('lib', 'qty1', 'qty2'))
res = res.append([{'qty1':10.0}], ignore_index=True)
print(res.head())

   lib  qty1  qty2
0  NaN  10.0   NaN

26

목록 목록을 작성하여 데이터 프레임으로 변환 할 수도 있습니다.

import pandas as pd

columns = ['i','double','square']
rows = []

for i in range(6):
    row = [i, i*2, i*i]
    rows.append(row)

df = pd.DataFrame(rows, columns=columns)

기부

    나는 두 광장
0 0 0
1 1 1
2 2 4 4
3 3 6 9
44 8 16
5 5 10 25

15

이것은 OP 질문에 대한 대답이 아니라 위의 @ShikharDua의 대답을 설명하는 장난감 예제입니다.

이 조각은 사소한 것이지만 실제 데이터에는 1,000 개의 행과 많은 열이 있었고 여러 열로 그룹화 한 다음 둘 이상의 태그 열에 대해 아래 통계를 수행 할 수 있기를 원했습니다. 따라서 한 번에 한 행씩 데이터 프레임을 작성하는 신뢰할 수있는 방법을 갖는 것이 매우 편리했습니다. @ShikharDua 감사합니다!

import pandas as pd 

BaseData = pd.DataFrame({ 'Customer' : ['Acme','Mega','Acme','Acme','Mega','Acme'],
                          'Territory'  : ['West','East','South','West','East','South'],
                          'Product'  : ['Econ','Luxe','Econ','Std','Std','Econ']})
BaseData

columns = ['Customer','Num Unique Products', 'List Unique Products']

rows_list=[]
for name, group in BaseData.groupby('Customer'):
    RecordtoAdd={} #initialise an empty dict 
    RecordtoAdd.update({'Customer' : name}) #
    RecordtoAdd.update({'Num Unique Products' : len(pd.unique(group['Product']))})      
    RecordtoAdd.update({'List Unique Products' : pd.unique(group['Product'])})                   

    rows_list.append(RecordtoAdd)

AnalysedData = pd.DataFrame(rows_list)

print('Base Data : \n',BaseData,'\n\n Analysed Data : \n',AnalysedData)

14

간단하고 좋은 방법을 찾아 냈습니다.

>>> df
     A  B  C
one  1  2  3
>>> df.loc["two"] = [4,5,6]
>>> df
     A  B  C
one  1  2  3
two  4  5  6

1
그러면 후드 아래에 전체 DataFrame이 복사됩니다. 기본 배열은 확장 할 수 없으므로 복사해야합니다.
방수

10

생성기 객체를 사용하여 데이터 프레임을 만들 수 있으며, 이는 목록보다 메모리 효율성이 높습니다.

num = 10

# Generator function to generate generator object
def numgen_func(num):
    for i in range(num):
        yield ('name_{}'.format(i), (i*i), (i*i*i))

# Generator expression to generate generator object (Only once data get populated, can not be re used)
numgen_expression = (('name_{}'.format(i), (i*i), (i*i*i)) for i in range(num) )

df = pd.DataFrame(data=numgen_func(num), columns=('lib', 'qty1', 'qty2'))

기존 DataFrame에 raw를 추가하려면 append 메소드를 사용할 수 있습니다.

df = df.append([{ 'lib': "name_20", 'qty1': 20, 'qty2': 400  }])

9

새 레코드 (데이터 프레임)를 작성하고 old_data_frame에 추가하십시오 . new_record (data_frame) 를 만들기 위해 과 해당 이름
목록을 전달합니다.

new_record = pd.DataFrame([[0,'abcd',0,1,123]],columns=['a','b','c','d','e'])

old_data_frame = pd.concat([old_data_frame,new_record])

8

행을 추가 / 추가하는 방법은 다음과 같습니다. pandas DataFrame

def add_row(df, row):
    df.loc[-1] = row
    df.index = df.index + 1  
    return df.sort_index()

add_row(df, [1,2,3]) 

비어 있거나 채워진 팬더 DataFrame에 행을 삽입 / 추가하는 데 사용할 수 있습니다


1
이것은 내림차순으로 인덱스를 추가하고 있습니다
Parthiban Rajendran

5

ShikharDua의 답변과 같은 사전 목록 대신 테이블을 사전 사전 으로 표시 할 수 있습니다 . 열을 미리 알고 있으면 각 목록이 하나의 열을 행 순서로 저장합니다. 마지막으로 DataFrame을 한 ​​번 생성합니다.

들면 C의 열 및 n 개의 행이 사용 딕셔너리 1과 C의 목록과 목록 1 대 N 사전. 사전 목록 방법에는 모든 키를 저장하는 각 사전이 있으며 모든 행에 대해 새 사전을 작성해야합니다. 여기서 우리는 목록에만 추가하는데, 이는 시간이 일정하고 이론적으로 매우 빠릅니다.

# current data
data = {"Animal":["cow", "horse"], "Color":["blue", "red"]}

# adding a new row (be careful to ensure every column gets another value)
data["Animal"].append("mouse")
data["Color"].append("black")

# at the end, construct our DataFrame
df = pd.DataFrame(data)
#   Animal  Color
# 0    cow   blue
# 1  horse    red
# 2  mouse  black

5

끝에 행을 추가하려면 목록으로 추가하십시오.

valuestoappend = [va1,val2,val3]
res = res.append(pd.Series(valuestoappend,index = ['lib', 'qty1', 'qty2']),ignore_index = True)

4

그것을하는 또 다른 방법 (아마도 성능이 좋지는 않음) :

# add a row
def add_row(df, row):
    colnames = list(df.columns)
    ncol = len(colnames)
    assert ncol == len(row), "Length of row must be the same as width of DataFrame: %s" % row
    return df.append(pd.DataFrame([row], columns=colnames))

다음과 같이 DataFrame 클래스를 향상시킬 수도 있습니다.

import pandas as pd
def add_row(self, row):
    self.loc[len(self.index)] = row
pd.DataFrame.add_row = add_row

1

간단하게. 데이터 프레임에서 행으로 추가 될 입력으로 목록을 가져옴 :-

import pandas as pd  
res = pd.DataFrame(columns=('lib', 'qty1', 'qty2'))  
for i in range(5):  
    res_list = list(map(int, input().split()))  
    res = res.append(pd.Series(res_list,index=['lib','qty1','qty2']), ignore_index=True)

1

필요한 것은 loc[df.shape[0]]또는loc[len(df)]


# Assuming your df has 4 columns (str, int, str, bool)
df.loc[df.shape[0]] = ['col1Value', 100, 'col3Value', False] 

또는

df.loc[len(df)] = ['col1Value', 100, 'col3Value', False] 

0

우리는 종종 df.loc[subscript] = …하나의 DataFrame 행에 할당 하는 구문 을 봅니다. Mikhail_Sam 은이 구성과 마지막으로 dict 및 create DataFrame을 사용하는 방법을 포함하는 벤치 마크 를 게시했습니다 . 그는 후자가 가장 빠르다는 것을 발견했다. 그러나 그의 코드에서 (사전 할당 된 DataFrame으로)를로 바꾸면 그 방법은 dict를 사용하는 것과 비슷한 방식으로 결과가 크게 변경됩니다. 따라서 우리는 더 자주 사용 을 고려해야합니다. 그러나 0부터 시작하는 아래 첨자를 사용해야합니다.이 첨자는 DataFrame.index와 다를 수 있습니다.df3.loc[i] = …df3.values[i] = …df.values[subscript] = ….values


이 코드 예제는 유용 할 것입니다
baxx

1
@baxx-하나의 코드 예제벤치 마크 링크 ( # .loc with prealloc)에 있으며 다른 예제는 Pandas DataFrame의 각 행의 데이터와 나머지 행의 데이터를 비교 해야하는 문제입니다. 계산 속도를 높일 수있는 방법이 있습니까 ? 그리고 그 대답이 받아 들여졌습니다.
Armali

0

pandas.DataFrame.append

DataFrame.append (self, other, ignore_index = False, verify_integrity = False, sort = False) → 'DataFrame'

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
df.append(df2)

ignore_index를 True로 설정 한 경우 :

df.append(df2, ignore_index=True)

0

행을 추가하기 전에 데이터 프레임을 딕셔너리로 ​​변환해야합니다. 여기에서 키를 데이터 프레임의 열로 볼 수 있고 열의 값이 다시 사전에 저장되지만 모든 열의 키는 데이터 프레임의 인덱스 번호입니다. 그 아이디어는 아래 코드를 작성하게합니다.

df2=df.to_dict()
values=["s_101","hyderabad",10,20,16,13,15,12,12,13,25,26,25,27,"good","bad"] #this is total row that we are going to add
i=0
for x in df.columns:   #here df.columns gives us the main dictionary key
    df2[x][101]=values[i]   #here the 101 is our index number it is also key of sub dictionary
    i+=1

0

이를 위해 두 개의 DataFrame을 연결할 수 있습니다. 기본적 으로이 문제를 발견하여 문자 색인 (숫자가 아님)으로 기존 DataFrame에 새 행을 추가했습니다. 그래서 duct ()에 새 행의 데이터를 입력하고 목록에 색인을 입력합니다.

new_dict = {put input for new row here}
new_list = [put your index here]

new_df = pd.DataFrame(data=new_dict, index=new_list)

df = pd.concat([existing_df, new_df])

-1

빈 DataFrame에 항목을 추가합니다. 문제는 df.index.max() == nan첫 번째 색인의 경우입니다.

df = pd.DataFrame(columns=['timeMS', 'accelX', 'accelY', 'accelZ', 'gyroX', 'gyroY', 'gyroZ'])

df.loc[0 if math.isnan(df.index.max()) else df.index.max() + 1] = [x for x in range(7)]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.