programing

Pandas DataFrame 헤더에서 공백을 제거하려면 어떻게해야합니까?

nasanasas 2020. 11. 23. 08:15
반응형

Pandas DataFrame 헤더에서 공백을 제거하려면 어떻게해야합니까?


일부 열 머리글에 추가 공백이있는 Excel 파일의 데이터를 구문 분석하고 있습니다.

결과 데이터 프레임의 열을 확인하면 다음과 같이됩니다.

df.columns

결과는 다음과 같습니다.

Index(['Year', 'Month ', 'Value'])

결과적으로 나는 실행할 수 없습니다

df["Month"]

"Month"가 아니라 "Month"를 요청했듯이 열을 찾을 수 없다는 것을 알려주기 때문입니다.

내 질문은 열 머리글에서 원하지 않는 공백을 어떻게 제거 할 수 있습니까?


rename메소드에 기능을 부여 할 수 있습니다 . str.strip()방법은 원하는 것을 수행해야합니다.

In [5]: df
Out[5]: 
   Year  Month   Value
0     1       2      3

[1 rows x 3 columns]

In [6]: df.rename(columns=lambda x: x.strip())
Out[6]: 
   Year  Month  Value
0     1      2      3

[1 rows x 3 columns]

.str.strip최신 버전을 사용하는 경우 이제 열만 호출 할 수 있습니다 .

In [5]:
df = pd.DataFrame(columns=['Year', 'Month ', 'Value'])
print(df.columns.tolist())
df.columns = df.columns.str.strip()
df.columns.tolist()

['Year', 'Month ', 'Value']
Out[5]:
['Year', 'Month', 'Value']

타이밍

In[26]:
df = pd.DataFrame(columns=[' year', ' month ', ' day', ' asdas ', ' asdas', 'as ', '  sa', ' asdas '])
df
Out[26]: 
Empty DataFrame
Columns: [ year,  month ,  day,  asdas ,  asdas, as ,   sa,  asdas ]


%timeit df.rename(columns=lambda x: x.strip())
%timeit df.columns.str.strip()
1000 loops, best of 3: 293 µs per loop
10000 loops, best of 3: 143 µs per loop

그래서 str.strip~ 2X 더 빠릅니다. 더 큰 dfs에서 더 잘 확장 될 것으로 기대합니다.


CSV 형식을 사용하여 Excel에서 내보내고 Pandas DataFrame으로 읽는 경우 다음을 지정할 수 있습니다.

skipinitialspace=True

when calling pd.read_csv.

From the documentation:

skipinitialspace : bool, default False

Skip spaces after delimiter.

참고URL : https://stackoverflow.com/questions/21606987/how-can-i-strip-the-whitespace-from-pandas-dataframe-headers

반응형