DataFrame Index에 기능 적용
Pandas의 인덱스에 함수를 적용하는 가장 좋은 방법은 무엇입니까 DataFrame
? 현재 저는이 장황한 접근 방식을 사용하고 있습니다.
pd.DataFrame({"Month": df.reset_index().Date.apply(foo)})
여기서은 Date
색인 foo
의 이름이고은 내가 적용하는 함수의 이름입니다.
HYRY 가 의견에서 이미 제안 했듯이 Series.map 은 여기로 이동하는 방법입니다. 결과 시리즈에 인덱스를 설정하기 만하면됩니다.
간단한 예 :
df = pd.DataFrame({'d': [1, 2, 3]}, index=['FOO', 'BAR', 'BAZ'])
df
d
FOO 1
BAR 2
BAZ 3
df.index = df.index.map(str.lower)
df
d
foo 1
bar 2
baz 3
색인! = 시리즈
@OP가 지적한대로. df.index.map(str.lower)
호출은 NumPy와 배열을 반환합니다. 이는 데이터 프레임 인덱스 가 시리즈가 아닌 numpy 배열을 기반으로 하기 때문 입니다.
인덱스를 Series로 만드는 유일한 방법은 그것에서 Series를 만드는 것입니다.
pd.Series(df.index.map(str.lower))
경고
Index
클래스는 이제 서브 클래스 StringAccessorMixin
는 다음과 같이 위의 작업을 할 수있는 수단,
df.index.str.lower()
이것은 여전히 Series가 아닌 Index 객체를 생성합니다.
인덱스에 "foo"함수를 적용하여 현재 DataFrame에서 열을 만들고 싶다고 가정합니다. 당신은 쓸 수 있습니다 ...
df['Month'] = df.index.map(foo)
시리즈 만 생성하려면 대신 할 수 있습니다.
pd.Series({x: foo(x) for x in foo.index})
많은 답변이 인덱스를 배열로 반환하고 있으며 인덱스 이름 등에 대한 정보를 잃어 버릴 수 pd.Series(index.map(myfunc), name=index.name)
있습니다. MultiIndex에서도 작동하지 않습니다.
이 작업을 수행 한 방법은 "이름 바꾸기"를 사용하는 것입니다.
mix = pd.MultiIndex.from_tuples([[1, 'hi'], [2, 'there'], [3, 'dude']], names=['num', 'name'])
data = np.random.randn(3)
df = pd.Series(data, index=mix)
print(df)
num name
1 hi 1.249914
2 there -0.414358
3 dude 0.987852
dtype: float64
# Define a few dictionaries to denote the mapping
rename_dict = {i: i*100 for i in df.index.get_level_values('num')}
rename_dict.update({i: i+'_yeah!' for i in df.index.get_level_values('name')})
df = df.rename(index=rename_dict)
print(df)
num name
100 hi_yeah! 1.249914
200 there_yeah! -0.414358
300 dude_yeah! 0.987852
dtype: float64
이것에 대한 유일한 트릭은 당신의 인덱스가 다른 다중 인덱스 레벨과 함께 고유 한 레이블을 가져야한다는 것입니다.하지만 아마도 저보다 더 똑똑한 누군가가 그것을 극복하는 방법을 알고있을 것입니다. 내 목적을 위해 이것은 95 %의 시간 동안 작동합니다.
참고 URL : https://stackoverflow.com/questions/20025325/apply-function-on-dataframe-index
'UFO ET IT' 카테고리의 다른 글
브라우저에서 방향을 에뮬레이션 할 수 있습니까? (0) | 2020.12.08 |
---|---|
Java에서 ClassCastException을 던질 수있는 다른 것은 무엇입니까? (0) | 2020.12.08 |
특정 커밋까지 힘내 풀 (0) | 2020.12.08 |
Docker 이미지를 Amazon ECS 리포지토리로 푸시 (0) | 2020.12.08 |
두 개의 XML 문서를 어떻게 비교 하시겠습니까? (0) | 2020.12.08 |