팬더 데이터 프레임을 시리즈로 변환
저는 판다를 처음 접하는 사람입니다.저는 1행 23열의 팬더 데이터 프레임을 가지고 있습니다.
이거 시리즈로 전환하고 싶은데요?이것을 하는 가장 피톤적인 방법이 무엇인지 궁금합니다.
노력했습니다.pd.Series(myResults)
불평하지만,ValueError: cannot copy sequence with size 23 to array axis with dimension 1
. 수학적인 면에서 여전히 "벡터"라는 것을 깨달을 만큼 똑똑하지는 않습니다.
감사합니다!
단일 행 데이터 프레임을 변환한 다음 결과를 시리즈로 압축할 수 있습니다(그 반대는to_frame
).
df = pd.DataFrame([list(range(5))], columns=["a{}".format(i) for i in range(5)])
>>> df.squeeze(axis=0)
a0 0
a1 1
a2 2
a3 3
a4 4
Name: 0, dtype: int64
참고: @IanS에 의해 제기된 점을 수용하기 위해 (OP의 질문에는 없지만) 데이터 프레임의 크기를 테스트합니다.나는 다음과 같이 추측합니다.df
는 데이터 프레임이지만 에지 케이스는 빈 데이터 프레임, 모양(1, 1)의 데이터 프레임 및 둘 이상의 행을 가진 데이터 프레임이며, 이 경우 사용자는 원하는 기능을 구현해야 합니다.
if df.empty:
# Empty dataframe, so convert to empty Series.
result = pd.Series()
elif df.shape == (1, 1)
# DataFrame with one value, so convert to series with appropriate index.
result = pd.Series(df.iat[0, 0], index=df.columns)
elif len(df) == 1:
# Convert to series per OP's question.
result = df.T.squeeze()
else:
# Dataframe with multiple rows. Implement desired behavior.
pass
이는 @themachineist가 제공하는 답변의 행을 따라 단순화할 수도 있습니다.
if len(df) > 1:
# Dataframe with multiple rows. Implement desired behavior.
pass
else:
result = pd.Series() if df.empty else df.iloc[0, :]
수학적인 면에서 여전히 "벡터"라는 것을 깨달을 만큼 똑똑하지는 않습니다.
오히려 차원의 차이를 인식할 수 있을 정도로 똑똑하다고 하세요. :-)
당신이 할 수 있는 가장 간단한 일은 그 행을 선택하는 것입니다.iloc
, 열을 새 인덱스로 하고 값을 값으로 하는 영상 시리즈를 제공합니다.
>>> df = pd.DataFrame([list(range(5))], columns=["a{}".format(i) for i in range(5)])
>>> df
a0 a1 a2 a3 a4
0 0 1 2 3 4
>>> df.iloc[0]
a0 0
a1 1
a2 2
a3 3
a4 4
Name: 0, dtype: int64
>>> type(_)
<class 'pandas.core.series.Series'>
다음 두 가지 방법 중 하나를 사용하여 데이터 프레임을 슬라이싱하여 영상 시리즈를 가져올 수 있습니다.
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iloc.html http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.random.randn(1,8))
series1=df.iloc[0,:]
type(series1)
pandas.core.series.Series
하나의 열 데이터 프레임 df가 있는 경우 이를 열로 변환할 수 있습니다.
df.iloc[:,0] # pandas Series
하나의 행 데이터 프레임을 가지므로df
, 이전의 경우에 해당되도록 바꿔치기 할 수 있습니다.
df.T.iloc[:,0]
스택()을 사용할 수도 있습니다.
df= DataFrame([list(range(5))], columns = [“a{}”.format(I) for I in range(5)])
실행 후 다음을 실행합니다.
df.stack()
데이터 프레임을 직렬로 구하면
다른 방법은..
myResult가 데이터를 포함하는 dataFrame이라고 가정합니다. 1col 및 23행 형태로 데이터를 포함합니다.
# label your columns by passing a list of names
myResult.columns = ['firstCol']
# fetch the column in this way, which will return you a series
myResult = myResult['firstCol']
print(type(myResult))
마찬가지로 여러 열이 있는 Dataframe에서 영상 시리즈를 가져올 수 있습니다.
data = pd.DataFrame({"a":[1,2,3,34],"b":[5,6,7,8]})
new_data = pd.melt(data)
new_data.set_index("variable", inplace=True)
인덱스를 데이터의 열 이름으로 사용하고 모든 데이터가 "value" 열에 있는 데이터 프레임을 제공합니다.
또 다른 방법은 매우 간단합니다.
df= df.iloc[3].reset_index(drop=True).squeeze()
squeeze ->는 Series로 변환하는 것입니다.
언급URL : https://stackoverflow.com/questions/33246771/convert-pandas-data-frame-to-series
'source' 카테고리의 다른 글
디브의 내용물을 포장하지 않는 방법? (0) | 2023.10.08 |
---|---|
입자 시스템용 점 스프라이트 (0) | 2023.10.08 |
"while true"는 파이썬에서 무엇을 의미합니까? (0) | 2023.10.08 |
두 jQuery 결과를 결합하는 방법 (0) | 2023.10.08 |
xlib으로 스크린샷을 제대로 찍는 방법은? (0) | 2023.10.08 |