반응형
Pandas : 열의 모든 값을 변경하는 방법은 무엇입니까?
열이있는 데이터 프레임 "Date"
이 있고이 열의 모든 값이 동일한 값을 갖기를 원합니다 (연도 만 해당). 예:
City Date
Paris 01/04/2004
Lisbon 01/09/2004
Madrid 2004
Pekin 31/2004
내가 원하는 것은 :
City Date
Paris 2004
Lisbon 2004
Madrid 2004
Pekin 2004
내 코드는 다음과 같습니다.
fr61_70xls = pd.ExcelFile('AMADEUS FRANCE 1961-1970.xlsx')
#Here we import the individual sheets and clean the sheets
years=(['1961','1962','1963','1964','1965','1966','1967','1968','1969','1970'])
fr={}
header=(['City','Country','NACE','Cons','Last_year','Op_Rev_EUR_Last_avail_yr','BvD_Indep_Indic','GUO_Name','Legal_status','Date_of_incorporation','Legal_status_date'])
for year in years:
# save every sheet in variable fr['1961'], fr['1962'] and so on
fr[year]=fr61_70xls.parse(year,header=0,parse_cols=10)
fr[year].columns=header
# drop the entire Legal status date column
fr[year]=fr[year].drop(['Legal_status_date','Date_of_incorporation'],axis=1)
# drop every row where GUO Name is empty
fr[year]=fr[year].dropna(axis=0,how='all',subset=[['GUO_Name']])
fr[year]=fr[year].set_index(['GUO_Name','Date_of_incorporation'])
예를 들어 내 DataFrames에서 fr['1961']
의 값은 Date_of_incorporation
무엇이든 (문자열, 정수 등)이 될 수 있으므로이 열을 완전히 지운 다음 연도 만있는 다른 열을 DataFrames에 연결하는 것이 가장 좋습니다.
@DSM이 지적했듯이 벡터화 된 문자열 메서드를 사용하여이 작업을 더 직접 수행 할 수 있습니다 .
df['Date'].str[-4:].astype(int)
또는 추출을 사용합니다 (각 문자열 어딘가에 길이가 4 인 자릿수 집합이 하나만 있다고 가정).
df['Date'].str.extract('(?P<year>\d{4})').astype(int)
약간 더 유연한 대안은 다음과 같이 사용하는 것입니다 apply
(또는 동등하게 map
).
df['Date'] = df['Date'].apply(lambda x: int(str(x)[-4:]))
# converts the last 4 characters of the string to an integer
람다 함수는에서 입력 Date
을 받아 1 년으로 변환합니다.
다음과 같이 더 자세하게 작성할 수 있습니다.
def convert_to_year(date_in_some_format);
date_as_string = str(date_in_some_format)
year_as_string = date_in_some_format[-4:] # last four characters
return int(year_as_string)
df['Date'] = df['Date'].apply(convert_to_year)
아마도 'Year'가이 열의 더 나은 이름 일 것입니다.
다음을 사용하여 열 변환을 수행 할 수 있습니다. apply
달러와 쉼표를 제거하고 데이터를 부동으로 변환하는 깨끗한 함수를 정의하십시오.
def clean(x):
x = x.replace("$", "").replace(",", "").replace(" ", "")
return float(x)
다음으로, 당신의 칼럼에서 이렇게 부르세요.
data['Revenue'] = data['Revenue'].apply(clean)
또는 lambda
함수에서 함수 를 사용하려는 경우 apply
:
data['Revenue']=data['Revenue'].apply(lambda x:float(x.replace("$","").replace(",", "").replace(" ", "")))
참고 URL : https://stackoverflow.com/questions/12604909/pandas-how-to-change-all-the-values-of-a-column
반응형
'developer tip' 카테고리의 다른 글
엔티티 프레임 워크 4.1 및 MVC3에서 동적 프록시를 활성화하거나 비활성화해야합니까? (0) | 2020.11.08 |
---|---|
matplotlib 설정 y 축 레이블 크기 (0) | 2020.11.08 |
힘내 모든 하위 디렉토리 추가 (0) | 2020.11.08 |
X-REQUEST-ID http 헤더는 무엇입니까? (0) | 2020.11.08 |
IntelliJ의 Kotlin 미해결 참조 (0) | 2020.11.08 |