카테고리 없음

[파이썬] 열 비교 pandas python

행복을전해요 2021. 2. 25. 10:36

코드의 문제 는 booleans df[3] > df[1]반환 pandas.Series하고 메시지에 The truth value of a Series is ambiguous.

이 시도:

df[6] = df[0] #sets default value
df.loc[df[3]>df[1],6] = df[2] #change when second wins

그런 다음 print df또는 print df[6].

또한 읽기 부분을 더 쉽게 할 수 있습니다. df = read_csv('games.csv', delim_whitespace=True,header=None)

-------------------

기본적으로 부울 df["home"] > df["guest"]이 벡터 라는 점을 기억해야합니다. 이를 활용하여 벡터가있는 각 행에 홈 팀 이름을 할당 할 수 있습니다 True. 다음과 같이 시도해 볼 수 있습니다.

일부 데이터 시뮬레이션 :

In [22]: df = pandas.DataFrame({"home":[10,13,7,24,17], 
"guest":[13, 7, 7, 30, 17], 
"home_name":list("ABCDE"), 
"guest_name":list("abcde")})

새 열을 만들고 게스트 점수가 홈 점수보다 큰 각 행에 게스트 이름을 할당합니다 ( "승자"열의 다른 행은 첫 번째 할당 후 NaN이되고 점진적으로 채워집니다). :

In [23]: df.loc[df["guest"]>df["home"], "winner"] = df["guest_name"]

In [24]: df.loc[df["guest"]<df["home"], "winner"] = df["home_name"]

In [25]: df.loc[df["guest"]==df["home"], "winner"] = "tie"

In [26]: df
Out[26]: 
  home_name guest_name  home  guest winner
  0         A          a    10     13      a
  1         B          b    13      7      B
  2         C          c     7      7    tie
  3         D          d    24     30      d
  4         E          e    17     17    tie
  
-------------------

csv 파일을 처리하는 방법에 대한 예

ifile = open('myinputfile', 'rb')
infile = csv.DictReader(ifile)
for row in infile:
   process-row(row)
   

infile의 각 행을 반복해야합니다. 마찬가지로 df는 파일 행 집합이며 열을 비교하기 위해 각 행을 가져 오려면 반복해야합니다.



출처
https://stackoverflow.com/questions/22080111