Pandas.append() 방법에 대한 좋은 대안은 이제 더 이상 사용되지 않습니다.
나는 데이터 프레임에 단일 행을 추가하기 위해 다음 방법을 많이 사용합니다.제가 정말 좋아하는 한 가지는 간단한 딕트 객체를 추가할 수 있다는 것입니다.예:
# Creating an empty dataframe
df = pd.DataFrame(columns=['a', 'b'])
# Appending a row
df = df.append({ 'a': 1, 'b': 2 }, ignore_index=True)
다시 말하지만, 제가 이것에 대해 가장 좋아하는 것은 코드가 매우 깨끗하고 줄이 거의 필요하지 않다는 것입니다.이제 권장되는 대안은 다음과 같습니다.
# Create the new row as its own dataframe
df_new_row = pd.DataFrame({ 'a': [1], 'b': [2] })
df = pd.concat([df, df_new_row])
그래서 이전에 코드 한 줄은 이제 일회용 변수와 새로운 데이터 프레임을 만드는 여분의 크래프트가 있는 두 줄이었습니다. :( 과거에 제가 했던 것처럼 (더 이상 사용되지 않는) 딕트를 사용하는 좋은 방법이 있을까요?
필요한 경우 사전으로 목록을 만든 다음 새 데이터 프레임을 만듭니다.df = pd.DataFrame.from_records(your_list)
목록의 "추가" 방법은 매우 효율적이며 사용되지 않습니다.반면, 데이터 프레임은 설계상 자주 다시 생성되고 모든 데이터가 추가될 때 복사됩니다. 이 때문에 이 방법은 더 이상 사용되지 않습니다.
저는 부록 방법도 좋아합니다.하지만 당신은 받아쓰기 목록으로 한 줄로 그것을 할 수 있습니다.
df = pd.concat([df, pd.DataFrame.from_records([{ 'a': 1, 'b': 2 }])])
또는 증분 오름차순 색인이 있는 데이터 프레임의 값에 loc 및 tuples 사용
df.loc[len(df), ['a','b']] = 1, 2
아니면 아마도
df.loc[len(df), df.columns] = 3, 4
사용할 경우concat
대신:
append
outputxlsx = outputxlsx.append(df, ignore_index=True)
concat
outputxlsx = pd.concat([outputxlsx, df], ignore_index=True)
저도 비슷한 문제에 직면해 있었습니다.다른 해결책들은 저에게 효과가 없었습니다.이것이 특정 검색에 대한 첫 번째 구글 결과이고 저 자신이 적어도 두 번째로 여기서 끝났기 때문에 저는 이 문제를 다루기 위한 추가적인 가능성으로 이 답변을 남깁니다.
내 경우 데이터는 딕트가 아니라 알려진 매개 변수 집합에 대한 값 목록일 뿐입니다.데이터 프레임에 매개 변수 값을 행으로 추가하려고 합니다. 이렇게 하면 df[parameter]를 통해 하나의 매개 변수에 대한 일련의 모든 값에 액세스할 수 있기 때문입니다.
빈 DataFrame으로 시작합니다.
parameters = ['a', 'b', 'c', 'd', 'e', 'f']
df = pd.DataFrame(columns=parameters)
df:
a b c d e f
추가 기능을 사용하면 다음과 같이 매우 편리하게 행을 추가할 수 있습니다.
new_row = pd.Series([1,2,3,4,5,6], index=parameters, name='row1')
df.append(new_row)
df:
a b c d e f
row1 1 2 3 4 5 6
PD.concat을 사용하여 매우 유사한 방법으로 동일한 결과를 제공하는 것으로 나타났습니다.
new_row = pd.DataFrame([1,2,3,4,5,6], columns=['row1'], index=parameters).T
df = pd.concat((df, new_row))
핵심은 1d 데이터에서 (1,n)개의 데이터 프레임을 생성한 다음 다른 데이터 프레임과 일치하도록 전치하는 것이었습니다.
저처럼 많은 한 줄기보다는 설명적인 기능을 원하는 사람들을 위해 위의 @Rafael Gaitan에 기반한 옵션이 있습니다.
def appendDictToDF(df,dictToAppend):
df = pd.concat([df, pd.DataFrame.from_records([dictToAppend])])
return df
# Creating an empty dataframe
df = pd.DataFrame(columns=['a', 'b'])
# Appending a row
df= appendDictToDF(df,{ 'a': 1, 'b': 2 })
# Deprecated issue has been resolved
# Creating an empty dataframe
df = pd.DataFrame(columns=['a', 'b'])
print("df columns:", df)
# Appending a row
df = df.append({ 'a': 1, 'b': 2 }, ignore_index=True)
print("df column Values :", df)
# Create the new row as its own dataframe
df_new_row = pd.DataFrame.from_records({ 'a': [3], 'b': [4] })
df = pd.concat([df, df_new_row])
print("pd concat with two df's :", df)
다음 명령을 사용할 수 있습니다.
#If your index is a string
df.loc["name of the index"] = pd.Series({"Column 1" : Value1, "Column 2" : Value2,
"Column 3" : Value3, "Column 4" : Value4, ...})
#If your index is a number
df.loc[len(df)] = pd.Series({"Column 1" : Value1, "Column 2" : Value2,
"Column 3" : Value3, "Column 4" : Value4, ...})
변경사항은 초기 데이터 프레임에 저장됩니다.
언급URL : https://stackoverflow.com/questions/70837397/good-alternative-to-pandas-append-method-now-that-it-is-being-deprecated
'sourcetip' 카테고리의 다른 글
Node.js: SOAP XML 웹 서비스를 사용하는 방법 (0) | 2023.09.10 |
---|---|
도커 파일에서 CMD와 엔트리 포인트의 차이점은 무엇입니까? (0) | 2023.09.05 |
사용자 지정 요소에 ngModel을 구현하는 방법은 무엇입니까? (0) | 2023.09.05 |
Powershell 전자 메일 메시지 - 여러 수신자에게 보내는 전자 메일 (0) | 2023.09.05 |
MYSQL의 하위 쿼리에서 LIMIT 키워드를 사용하는 대신 (0) | 2023.09.05 |