스도쿠 퍼즐을 해결하는 스크립트를 작성 중입니다. 나는 pandas.DataFrame
스도쿠 자체에 a 를 사용 하고 숫자는 정수입니다.
상자에 어떤 숫자가 가능한지 확인하고 요구 사항에 맞는 여러 숫자를 확인할 때 상자 list
안에 숫자를 넣습니다 . 이 때문에, 나는 필요 dtype
의 모든 열의를 DataFrame
수 object
.
문제는 내 코드의 어느 시점에서 예기치 않게 dtype
변경된다는 것 float64
입니다.
여기에서의 복사본을 만들고 s를 s로 DataFrame
변경 하여 요구 사항을 확인합니다.list
NaN
sudoku_copy = sudoku
for column in range(sudoku_copy.shape[1]):
sudoku_copy[column] = sudoku_copy[column].apply(
lambda x: x if str(x).isnumeric() else np.nan
)
나중에 isin()
숫자가 이미 열, 행 또는 하위 표에 있는지 확인하는 데 사용 하기 때문에이 작업을 수행해야하며 거기에 list
s 가 있으면 오류가 발생합니다 .
나는 검사 dtype
의 sudoku
전 바로 그 문 뒤에 권리와 문제가있다. dtype
전에 object
,하지만 후에, 그것은이다 float64
. 그러나 성명은 변경 sudoku_copy
되지 않고 변경 sudoku
되므로 왜 sudoku
변경 되는지 전혀 알 수 없습니다 .
나는 실제로 그러한 문제를 보았다. 이는 NaN을 DataFrame에 삽입하기 때문입니다.
df = pd.DataFrame([range(3), range(3)])
df.dtypes
산출:
0 int64
1 int64
2 int64
dtype: object
그때:
df.iloc[0,0] = np.nan
df.dtypes
산출:
0 float64
1 int64
2 int64
dtype: object
원본을 보존하려면 copy()
방법을 사용하여 별도의 복사본을 만들어야합니다.
sudoku_copy = sudoku.copy()
copy()
메서드가 새 개체를 만들고 원래 코드에서 할당하면 기존 개체에 대한 참조가 생성 되기 때문 입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다