답변:
기본 배열에 액세스하고 해당 tolist메서드를 호출 할 수 있습니다 .
>>> df = pd.DataFrame([[1,2,3],[3,4,5]])
>>> lol = df.values.tolist()
>>> lol
[[1L, 2L, 3L], [3L, 4L, 5L]]
df.to_numpy().tolist() .
데이터에 보존하려는 열 및 색인 레이블이있는 경우 몇 가지 옵션이 있습니다.
예제 데이터 :
>>> df = pd.DataFrame([[1,2,3],[3,4,5]], \
columns=('first', 'second', 'third'), \
index=('alpha', 'beta'))
>>> df
first second third
alpha 1 2 3
beta 3 4 5
tolist()다른 답변에서 설명하는 방법은 유용하지만 수익률 만 핵심 데이터 - 필요에 따라 충분하지 않을 수있다.
>>> df.values.tolist()
[[1, 2, 3], [3, 4, 5]]
한 가지 방법 DataFrame은를 사용하여 json 으로 변환 df.to_json()한 다음 다시 구문 분석하는 것입니다. 이것은 번거롭지 만 to_json()몇 가지 유용한 옵션이 있기 때문에 몇 가지 장점 이 있습니다.
>>> df.to_json()
{
"first":{"alpha":1,"beta":3},
"second":{"alpha":2,"beta":4},"third":{"alpha":3,"beta":5}
}
>>> df.to_json(orient='split')
{
"columns":["first","second","third"],
"index":["alpha","beta"],
"data":[[1,2,3],[3,4,5]]
}
번거롭지 만 유용 할 수 있습니다.
좋은 소식은 열과 행에 대한 목록을 작성하는 것이 매우 간단하다는 것입니다.
>>> columns = [df.index.name] + [i for i in df.columns]
>>> rows = [[i for i in row] for row in df.itertuples()]
결과 :
>>> print(f"columns: {columns}\nrows: {rows}")
columns: [None, 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
(가)의 경우 None인덱스의 이름을 귀찮은이기 때문에, 이름을 변경합니다 :
df = df.rename_axis('stage')
그때:
>>> columns = [df.index.name] + [i for i in df.columns]
>>> print(f"columns: {columns}\nrows: {rows}")
columns: ['stage', 'first', 'second', 'third']
rows: [['alpha', 1, 2, 3], ['beta', 3, 4, 5]]
DataFrame.itertuples()또는 DataFrame.to_records()모든 하시나요?
참고 : Stack Overflow에서 Pandas Series 또는 DataFrame을 NumPy 배열 또는 일반 Python 목록으로 변환하는 것이 완전히 불필요한 경우를 많이 보았습니다. 라이브러리를 처음 사용하는 경우 필요한 기능이 이미 Pandas 개체에서 제공되는지 다시 확인하는 것이 좋습니다.
@jpp 의 주석 을 인용하려면 :
실제로 NumPy 배열을 목록 목록으로 변환 할 필요가없는 경우가 많습니다.
Pandas DataFrame / Series가 작동하지 않는 경우 기본 제공 DataFrame.to_numpy및 Series.to_numpy메서드를 사용할 수 있습니다 .
for elem in some_series.values.tolist():시리즈의 요소를 반복 할 수 있다는 것을 모르기 때문에 하는 것과 같은 매우 노골적인 경우를 언급하고 있습니다. 이 답변에 대해 무엇이 그렇게 끔찍한 지 잘 모르겠습니다.
DataFrame.iterrows () 함수를 사용하여 주어진 Dataframe의 각 행을 반복하고 각 행의 데이터에서 목록을 구성 할 수 있습니다.
# Empty list
row_list =[]
# Iterate over each row
for index, rows in df.iterrows():
# Create list for the current row
my_list =[rows.Date, rows.Event, rows.Cost]
# append the list to the final list
row_list.append(my_list)
# Print
print(row_list)
주어진 데이터 프레임의 각 행을 목록으로 성공적으로 추출 할 수 있습니다.
L출력에 s가 추가 된 이유는 무엇 입니까?