>

데이터 프레임이 있습니다 :

df =

  time  time   b
0   0.0  1.1  21
1   0.1  2.2  22
2   0.2  3.3  23
3   0.3  4.4  24
4   0.4  5.5  24

또한 다음과 같이 정의 된 단위에 대한 시리즈가 있습니다

su =

time     sal
time    zulu
b        m/s

이제 df.index를 "time (sal)"값과 동일하게 설정하고 싶습니다. 이 값은 모든 열에있을 수 있으므로 확인해야합니다.

나는 이것을 할 수있다 :

df.index = df.values[:,(df.columns == 'time') & (su.values == 'sal')]

그러나 내 인덱스는 다음과 같습니다.

array([[0.0],
       [0.1],
       [0.2],
       [0.3],
       [0.4]])

그러나 이것은 배열의 배열입니다. 더 큰 데이터 세트에서는 플롯이 더 오래 걸리는 것 같습니다. 값을 하드 코딩하면 배열 만 얻습니다.

df.index = df[0,0]
array([0.0, 0.1, 0.2, 0.3, 0.4])

다음을 수행 할 수도 있습니다 :

inx = ((df.columns == 'time') & (s.values == 'sal')).tolist().index(True)

"inx"를 0으로 설정 한 다음 단일 배열을 얻는다

df.index=df.values[0,inx]

그러나 나는 이것을 할 필요가 없다. 팬더와 부울 색인을 잘못 사용하고 있습니까?

원합니다 :

df =

  time  time   b
0.0   0.0  1.1  21
0.1   0.1  2.2  22
0.2   0.2  3.3  23
0.3   0.3  4.4  24
0.4   0.4  5.5  24

  • 답변 # 1

    알다시피, 이것은 당신이 기대 한 것입니다. 그러나 시간 이름의 이름을 time1&time2로 바 꾸었습니다. 그렇지 않으면 동일한 이름으로 사전을 만들 수 없습니다.

    df = {'time1': [0.0,0.1,0.2,0.3,0.4], 'time2': [1.1,2.2,3.3,4.4,5.5],'b':[21,22,23,24,24]}
    su = {'time1':'sal', 'time2':'zulu', 'b':'m/s'}
    indexes = df[su.keys()[su.values().index('sal')]]
    df = pd.DataFrame(df, index=indexes, columns=['time1', 'time2', 'b'])
    print df
    
    

  • 답변 # 2

    원래 DataFrame의 열 이름이 중복되어 복잡합니다. . 열 이름을 수정 해보십시오.

    샘플 코드

    unit = pd.Series(['sal', 'zulu', 'm/s'], index=['time', 'time', 'b'])
    >>> df
       time  time     b
    0   0.0   1.1  21.0
    1   0.1   2.2  22.0
    2   0.2   3.3  23.0
    3   0.3   4.4  24.0
    4   0.4   5.5  25.0
    new_col = ['{}({})'.format(df.columns[i], unit[i]) for i in range(len(df.columns))]
    >>> new_col 
    ['time(sal)', 'time(zulu)', 'b(m/s)']
    >>> df.columns = new_col
    >>> df
       time(sal)  time(zulu)  b(m/s)
    0        0.0         1.1    21.0
    1        0.1         2.2    22.0
    2        0.2         3.3    23.0
    3        0.3         4.4    24.0
    4        0.4         5.5    25.0
    >>> df.index = df['time(sal)'].values
    >>> df
         time(sal)  time(zulu)  b(m/s)
    0.0        0.0         1.1    21.0
    0.1        0.1         2.2    22.0
    0.2        0.2         3.3    23.0
    0.3        0.3         4.4    24.0
    0.4        0.4         5.5    25.0
    
    

  • 이전 c# - 하나 이상의 키를 포함하는 사전 목록을 반복하고 다른 키 값을 변경하는 방법은 무엇입니까?
  • 다음 google cloud platform - stackdrive의 여러 서비스에서 작업을 추적 할 수있는 방법이 있습니까?