Python DataFrame 부분 설정
R에서 Python으로 전환 중입니다. 방금 Pandas를 사용하기 시작했습니다. 멋지게 부분 집합이있는 R 코드가 있습니다.
k1 <- subset(data, Product = p.id & Month < mn & Year == yr, select = c(Time, Product))
이제 보강에서 일을하고 싶습니다. 이것이 내가 지금까지 얻은 것입니다.
import pandas as pd
data = pd.read_csv("../data/monthly_prod_sales.csv")
#first, index the dataset by Product. And, get all that matches a given 'p.id' and time.
data.set_index('Product')
k = data.ix[[p.id, 'Time']]
# then, index this subset with Time and do more subsetting..
나는 결함이있는 방식으로 검증되어 있습니다. 아마도 우아한 해결책이있을 것입니다. 누구든지 누구든지 수 있습니까? 내가 가지고있는 타임 스탬프에서 월과 연도를 추출하고 부분 설정을해야합니다. 아마도이 모든 것을 할 한 줄짜리가있을 것입니다.
k1 <- subset(data, Product = p.id & Time >= start_time & Time < end_time, select = c(Time, Product))
감사합니다.
나는 그것을 가정합니다 Time
및 Product
A의 열입니다 DataFrame
, df
의 인스턴스이며 DataFrame
, 그 다른 변수는 스칼라 값은 다음과 있습니다
지금은 DataFrame
인스턴스 를 참조해야 합니다.
k1 = df.loc[(df.Product == p_id) & (df.Time >= start_time) & (df.Time < end_time), ['Time', 'Product']]
&
연산자 대 비교 연산자 의 우선 순위 때문에 괄호도 필요 합니다. &
오퍼레이터는 차례로 비교 연산자보다 높은 우선 순위가 연산기와 동일한 순위를 수행하는 오버로드 된 비트 연산자입니다.
에서 pandas
0.13 새로운 실험 방법을 사용할 수 있습니다. 인수 모듈로 하위 집합과 매우 유사합니다 .DataFrame.query()
select
으로 query()
당신과 같이 그것을 할 것입니다 :
df[['Time', 'Product']].query('Product == p_id and Month < mn and Year == yr')
다음은 간단한 예입니다.
In [9]: df = DataFrame({'gender': np.random.choice(['m', 'f'], size=10), 'price': poisson(100, size=10)})
In [10]: df
Out[10]:
gender price
0 m 89
1 f 123
2 f 100
3 m 104
4 m 98
5 m 103
6 f 100
7 f 109
8 f 95
9 m 87
In [11]: df.query('gender == "m" and price < 100')
Out[11]:
gender price
0 m 89
4 m 98
9 m 87
관심있는 최종 쿼리는 다음과 같이 연결하여 비교를 가능하게합니다.
k1 = df[['Time', 'Product']].query('Product == p_id and start_time <= Time < end_time')
R과 더 나은 솔루션을 찾는 사람을 위해 :
df[(df.Product == p_id) & (df.Time> start_time) & (df.Time < end_time)][['Time','Product']]
data.loc
또는 query
에 대한 필요는 없지만 조금 길다고 생각합니다.
주어진 열을 []로 감싸서 하위 집합 조건을 사용할 수 있음을 발견했습니다. 예를 들어 [ 'Product', 'Time', 'Year', 'Color'] 열이있는 df가 있습니다.
그리고 2014 년 이전에 만든 제품을 포함하고 싶다고 가정 해 보겠습니다.
df[df['Year'] < 2014]
이 경우 모든 행을 반환합니다. 다른 조건을 추가 할 수 있습니다.
df[df['Year'] < 2014][df['Color' == 'Red']
그런 다음 위의 지시에 따라 원하는 열을 선택하십시오. 예를 들어, 위의 df에 대한 제품 색상 및 키,
df[df['Year'] < 2014][df['Color' == 'Red'][['Product','Color']]
알려진 열 이름으로 빈 데이터 프레임 만들기 :
Names = ['Col1','ActivityID','TransactionID']
df = pd.DataFrame(columns = Names)
csv 에서 데이터 프레임 만들기 :
df = pd.DataFrame('...../file_name.csv')
의 하위 집합에 동적 필터 만들기 dtaframe
:
i = 12
df[df['ActivitiID'] <= i]
dtaframe의 필수 열을 하위 집합으로 만드는 동적 필터 만들기
df[df['ActivityID'] == i][['TransactionID','ActivityID']]
참조 URL : https://stackoverflow.com/questions/19237878/subsetting-a-python-dataframe
'ProgramingTip' 카테고리의 다른 글
HTML5 데이터 속성에 자바 펼쳐 배열 저장 및 검색 (0) | 2021.01.10 |
---|---|
Google지도 용 맞춤 정보 창 (0) | 2021.01.10 |
오류 : lombok 1.16.2로 업그레이드 한 후 패키지 javax.annotation이 존재하지 않습니다. (0) | 2021.01.10 |
단어 빈도수 Java 8 (0) | 2021.01.10 |
ES6 자바 펼쳐에서 기호 (@)는 무엇을 소유하고 있습니까? (0) | 2021.01.10 |