데이터 프레임이 있고 주어진 열에서 일부 연산을 수행하고 새 열을 생성해야하는 경우 아래 함수보다 더 좋은 방법이 있습니까?팬더 작업을 사용하여 팬더 데이터 프레임에 열 추가
원본 열을 변경하고 싶지는 않습니다. 이 작업과 유사한 작업을 위해 새 열을 계속 추가하고 싶습니다.
하지만 아래 코드에는 너무 많은 행이있는 것 같습니다. 즉, 팬더의 rank() 함수는 매우 편리합니다. 데이터 프레임에 "어이, 이미 알고있는 함수를 적용해라."라고 말하면서 원래의 칼럼 자체를 수행하는 대신 끝에 칼럼을 새 컬럼으로 만든다. 데이터 프레임의 "
그런 방법이 있습니까? 아니면 아래의 코드를 좀 더 간결하고 우아하게 만들고 같은 결과를 얻을 수있는 방법이 있습니까? 나는 단지 장황한 것처럼 보인다. 나는 다른 일을 위해서도 이것을한다. cut() 함수와 동일한 유형의 함수가 있습니다. 나는 다른 몇 가지 작전을 위해 그것을 할 것입니다. 너무 일반적이어서 쉽게 보입니다.
감사합니다.
def rank(pdfAll, nOldColIndex, sNewColName, sMethod, bAsc):
"""Appends a ranked column to a DataFrame based on an existing column.
nOldColIndex is the index of the column with the original data.
sNewColName is the name of the new column.
sMethod goes to the pandas rank function to influence ranking behavior.
bAsc goes to the pandas rank function to influence ranking behavior.
pdfAll[nOldColIndex] must have numeric contents.
"""
serOldCol = pdfAll.ix[:,nOldColIndex]
serOldCol.name = sNewColName
serNewCol = serOldCol.rank(method=sMethod, ascending=bAsc)
pdfNewCol = pd.DataFrame(serNewCol)
pdfAll = pd.merge(pdfAll, pdfNewCol, left_index=True, right_index=True)
return pdfAll
샘플 데이터 프레임과이를 실행하는 명령을 제공 할 수 있습니까? – FooBar
달성하고자하는 것을 정확하게 설명하십시오. 일반적으로 반복 형식을 피하고 계산을 벡터화 할 수있는 경우 apply를 사용하십시오. 그냥 새 열을 추가하는 것처럼 보입니다.이 경우 df [ 'new_col'] = some_calc_on_df를 수행하십시오. 동일한 인덱스를 가진 다른 데이터 프레임을 추가하고 추가 또는 연결을 사용하려면 순서가 다르며 일부 ID 열에 가입하려는 경우가 아니면 병합 할 필요가 없습니다. – EdChum