난 그냥 내 에서 0.13.0rc1. 0.11 로 업그레이드됨 판다 이제 터지는 아웃해야 응용 프로그램이 여러 가지 새로운 개의경고. 그 중 하나는 다음과 같습니다.
E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
정확히 어떤 그런이야길 무슨뜻이냐믄? 뭔가 변경할 필요가 있습니까?
만약 내가 어떻게 해야 할 것 같아요 일시중지가 경고 ' [& # 39, TVol& # 39;] quote_df 사용할 수 있다 [# 39, & # 39, TVol&] = quote_df /TVOL_SCALE '?
def _decode_stock_quote(list_of_150_stk_str):
"""decode the webpage and return dataframe"""
from cStringIO import StringIO
str_of_all = "".join(list_of_150_stk_str)
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) #dtype={'A': object, 'B': object, 'C': np.float64}
quote_df.rename(columns={'A':'STK', 'B':'TOpen', 'C':'TPCLOSE', 'D':'TPrice', 'E':'THigh', 'F':'TLow', 'I':'TVol', 'J':'TAmt', 'e':'TDate', 'f':'TTime'}, inplace=True)
quote_df = quote_df.ix[:,[0,3,2,1,4,5,8,9,30,31]]
quote_df['TClose'] = quote_df['TPrice']
quote_df['RT'] = 100 * (quote_df['TPrice']/quote_df['TPCLOSE'] - 1)
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
quote_df['TAmt'] = quote_df['TAmt']/TAMT_SCALE
quote_df['STK_ID'] = quote_df['STK'].str.slice(13,19)
quote_df['STK_Name'] = quote_df['STK'].str.slice(21,30)#.decode('gb2312')
quote_df['TDate'] = quote_df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10])
return quote_df
E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
E:\FinReporter\FM_EXT.py:450: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TAmt'] = quote_df['TAmt']/TAMT_SCALE
E:\FinReporter\FM_EXT.py:453: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TDate'] = quote_df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10])
',' 를 위해 만든 플래깅 세팅비트코피워닝 잠재적으로 복잡한 " chained". # 39, t 항상 don& 지정, 다음과 같은 일을 하는 것으로, 특히 처음 선택물을 복제본에 되돌려줍니다 a . [참조 GH5390 및 GH5597 의 배경 토론.]
df[df['A'] > 2]['B'] = new_val # new_val not set in df
The warning 는 제안에 재작성할 다음과 같습니다.
df.loc[df['A'] > 2, 'B'] = new_val
그러나 이 doesn& # 39, t 맞게 사용, 것과 같습니다.
df = df[df['A'] > 2]
df['B'] = new_val
pd.options.mode.chained_assignment = None # default='warn'
[3]: # 다시 대對 보기입니다 복사됩니다 https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html
일반적으로 "세팅비트코피워닝" 는 점을 표시하십시오 사용자 (, 특히 새로운 사용자) 에 이를 수 있다는 것은 5월 복사 및 운영, 원래 생각해. 가 아니했다고 거짓값 포지티브 (이우 확인을 할 수도 있다는 것을 알고 있는 경우 ). 간단히 한 선반가공 끕니까 할 가능성도 배제할 수 없다 (기본적으로 경고자로서 ) 로 경고에는 @Garrett 제안하세요.
여기 다른 옵션:
In [1]: df = DataFrame(np.random.randn(5, 2), columns=list('AB'))
In [2]: dfa = df.ix[:, [1, 0]]
In [3]: dfa.is_copy
Out[3]: True
In [4]: dfa['A'] /= 2
/usr/local/bin/ipython:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
#!/usr/local/bin/python
'Is_copy 플래깅' False '로 설정할 수 있습니다', 이를 효과적으로 선반가공 끕니까 확인란 해당 객체의 , :
In [5]: dfa.is_copy = False
In [6]: dfa['A'] /= 2
그런 일이 벌어질 경우 더 이상 명시적으로 복제본에 경고:
In [7]: dfa = df.ix[:, [1, 0]].copy()
In [8]: dfa['A'] /= 2
Op 코드 위에 보이고 있는 반면, 정당한, 아마 이 경고에는 기술적으로 경우는 뭔가 나는한다 뿐만 아니라 거짓값 양수입니다. 선택물 작업을 수행할 수 있는 또 다른 방법은 없는 약간만이라도 '경고' 를 통해 색인화 (예:
quote_df = quote_df.reindex(columns=['STK', ...])
또는,
quote_df = quote_df.reindex(['STK', ...], axis=1) # v.0.21
>. # 처리하는 방법에 세팅비트코피워닝 '의' 판다? 누가 이 post 는 판독기에서 위한 것인데,
np.random.seed(0)
df = pd.DataFrame(np.random.choice(10, (3, 5)), columns=list('ABCDE'))
df
A B C D E
0 5 0 3 3 7
1 9 3 5 2 4
2 7 6 8 8 1
어떻게 대처해야 할지 하는 것이 이 경고에는 이해할 수 있는 것이 왜 뚜르산을 무슨뜻이냐믄 및 1 위를 차지했다. 이 때, 프레임 / 인덱스화할 다테프럼스 필터링부터 것이 슬라이스에 반환되기를 view 또는 copy 내부 레이아웃뿐만 따라 각종 구축상의 세부내용에서. A " view"; 이 용어는 원래 데이터 수정 등) 으로 보기 때문에, 제안됩니다 보기입니다 원본 객체를 수정할 수 있습니다. 반면 copy" "; 는 원래 데이터 복제 및 수정 복제본에 원본에 대한 아무런 효과가 없습니다. '이' 에서 언급한 것처럼 다른 대답을 세팅비트코피워닝 위해 만든 플래깅 " 체인된 assignment"; 운영체. 고려해보십시오 'df' 를 설치 명이다. 예를 들어, 모든 값을 " B" 열 것인지 선택합니다. 여기서 열의 값을 " A"; > 있다. 5. 일부 사람들은 다른 사람들보다 더 정확한 여러 가지 방법으로 판다들은 이 작업을 수행할 수 있습니다. 예를 들어,
df[df.A > 5]['B']
1 3
2 6
Name: B, dtype: int64
그리고,
df.loc[df.A > 5, 'B']
1 3
2 6
Name: B, dtype: int64
이 경우, 이 때문에 이 값은 반품해야 동일한 결과를 미디어만을 판독값 어떤 차이도 없어. 그래서 어떤 문제가? 문제는 체인된 할당에서는 여부를 예측하기 힘든 도래하도록하려하는 보통 이렇게 크게 문제가 되고, 보기입니다 또는 복제본에 반환됨 시도중입니다 기반으로 back. 값을 지정할 경우 이전 acrobatconnectcentral. 고려해보십시오 의해 어떻게 이 코드가 실행될 된다.
df.loc[df.A > 5, 'B'] = 4
# becomes
df.__setitem__((df.A > 5, 'B'), 4)
한 번의 '' 후속 'df' setitem. 고려해보십시오 로토프, 이 코드:
df[df.A > 5]['B'] = 4
# becomes
df.__getitem__(df.A > 5).__setitem__('B", 4)
간단한 작업을 할 수 있는 A" "; 열 'df'. 선택 " A"; 경고 및 나누기 2 로 부활시키는 작업을 했지만, 작동합니다.
df2 = df[['A']]
df2['A'] /= 2
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/IPython/__main__.py:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
df2
A
0 2.5
1 4.5
2 3.5
몇 가지 방법을 직접 이 경고에는 기록했다.
# some code here
with ChainedAssignent():
df2['A'] /= 2
# more code follows
또는, 인상을 idfsysobject.
with ChainedAssignent(chained='raise'):
df2['A'] /= 2
SettingWithCopyError:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
많은 시간, 사용자가 이 예외 없이 왜 억제 방안을 찾는 시도를 완전히 이해할 수 있는 전송되었기 뚜르산을 1 위를 차지했다. [Ui_policytable_java_spe_policy XY (문제를) 이 좋은 예다 (https://meta.stackexchange.com/q/66377), 문제를 해결할 수 있는 사용자 시도 " Y"; 이는 실제로 발생한 문제를 더 깊은 뿌리가 내리고 X" ";). 일반적인 문제가 발생할 수 있는 이 경고에는 및 솔루션을 기반으로 질문내용은 뚜르산을 그러면 제시했다. >. 질문 1 >. I have a 다테프라임 >. >. df >. A B C D E >. 7 3 0 5 0 3 >. 1 2 5 4 3 9 >. 6 7 8 1 2 8 >. >. I want to 할당할지 값을 col " A"; >. 1000년. 5 내 걱정했던것 출력이 >. >. A B C D E >. 7 3 0 5 0 3 >. 1000년 5 4 3 2 1 >. 1000년 6 8 1 2 8 잘못된 방식으로 이 작업을 수행할 수 있습니다.
df.A[df.A > 5] = 1000 # works, because df.A returns a view
df[df.A > 5]['A'] = 1000 # does not work
df.loc[df.A 5]['A'] = 1000 # does not work
바르게 사용하는 'loc':
df.loc[df.A > 5, 'A'] = 1000
< br/>; >. , 질문 2< sup> /sup> 1<;; >. 나는 설정할 수 있다 (1, & # 39, D& # 39;) 의 값이 셀입니다 12345 를. 내 걱정했던것 출력이 >. >. A B C D E >. 7 3 0 5 0 3 >. 1 3 5 4 12345 9 >. 6 7 8 1 2 8 >. >. 이 같은 여러 가지 방법을 셀입니다 액세스하면 나도 날잡아 >. df ' [& # 39, D& # 39;] [1]'. What is the best way to do this? >. >. sub> <; 1. # 39 이 질문에 isn& 관련된 경고를 받았으나 특별히 없다. >. 어떻게 해야 이 특정한 작업을 제대로 이해하는 것이 좋다 >. 따라서 발생할 수 있는 상황을 피하기 위해 경고 >. future.< /sub>; 다음 방법을 사용할 수 있습니다.
df.loc[1, 'D'] = 12345
df.iloc[1, 3] = 12345
df.at[1, 'D'] = 12345
df.iat[1, 3] = 12345
< br/>; >. 질문 3 >. 나는 몇 가지 조건을 기준으로 값을 서브셋 위해 노력하고 있다. I have a >. 다테프라임 >. >. A B C D E >. 1 2 5 4 3 9 >. 6 7 8 1 2 8 >. >. 의 값을 D" " 할당할지 싶다;; 예를 들어, 123 " C". = 5. 난 >. 했다 >. >. df2.loc [df2.C D& # 39, & # 39 = 5;;] = 123 >. >. 그러나 나는 still 벌금을 받고 있는 것을 우려한 때문으로 보인다 >. '세팅비트코피워닝'! 이를 수정하는 방법은 무엇입니까? 실제로 이 높은 up in your 파이프라인간의 코드 때문일 것이다. '뭔가' 를 만드는 등 큰 df2 아니하였으매
df2 = df[df.A > 5]
? 이 경우, 그래서 '' 은 당초 반환되므로 부울입니다 인덱스화를 보기입니다 df2 참조. # 39; d '는' 을 해야 할 일은 어떤 you& 할당할지 df2 copy:
df2 = df[df.A > 5].copy()
# Or,
# df2 = df.loc[df.A > 5, :]
< br/>; >. 질문 4 >. # 39 m, 열, C" " 드롭합니다 i& 위해 노력하고 있다. 현재 위치) 에서 >. A B C D E >. 1 2 5 4 3 9 >. 6 7 8 1 2 8 >. >. 사용하지만 >. >. df2.drop (& # 39, C& # 39, 축 (axis) = 1, 인플레 이스 = True) >. >. '' 세팅비트코피워닝 던진다. 왜 그럴까? 이 때문에 '에서' 로 생성되었습니까 df2 보기입니다 등 일부 다른 분할 작업을 합니다.
df2 = df[df.A > 5]
이때 '으로' 의 'df' 또는 'loc 사용할 수 있도록 복사 (copy)', 전과 같이.
가서 할 때 이 같은 일이.
quote_df = quote_df.ix[:,[0,3,2,1,4,5,8,9,30,31]]
'홀로서기' 이 새로운 case_ 프란다스트릭스 _in 되돌려줍니다 다테프라임.
이 모든 값이 변하지 않을 것이라는 당초 다테프라임 다테프라임, 변경하시려면 결정할 수 있습니다.
이게 판다 경고자로서 것을 확인할 수 있습니다.
이 '보다 더 많은 일을 할 사람이 한 가지 분명한 것은 객체에는 트리스' 에 대해 아무것도 검토완료 청소하십시오 코드, 이는 강한 냄새가 난다.
그러나 이 같은 다테프라임:
df = pd.DataFrame({"a": [1,2,3,4], "b": [1,1,2,2]})
두 개의 비헤이비어를:
dfcopy = df.ix[:,["a"]]
dfcopy.a.ix[0] = 2
비헤이비어를 하나. '홀로서기' 는 현재 드프코프 다테프라임. 'Df' 변화하는 it 변하지 않습니다
df.ix[0, "a"] = 3
비헤이비어를 2: 당초 다테프라임 변경됩니다.
판다 '는' 이 있음을 트리스 개발자 및 카타시안 두 개의 새로운 객체를 생성할 수 있는 것은 매우 객체에는 [추론] 냄새나는 데이터 및 할당에서는 즉위. (다른 자키노크 기술입니까 '')
'트로스 시도하시겠습니까 데이터 복제본만 않기 때문에' 보다 빠르게 만들 수 있습니다.
'그' 는 기존 다테프라임 트로스 수정하십시오 인플레 이스, 이는 더 많은 메모리를 간편해집니다.
',' 이 템플릿에는 한 개의 비헤이비어를 트로스 예측할 수 있습니다.
너희는너희가 수행하는 코드에서 많은 큰 파일을 열 수 있도록 수정 후 로드을 비유하사 작다.
도와드릴 수 있는 'pd.read_csv' 기능이 많이 포함된 이 또한 읽어들이기를 훨씬 빨리 파일을 만듭니다.
그래서 이 일을 대신
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) #dtype={'A': object, 'B': object, 'C': np.float64}
quote_df.rename(columns={'A':'STK', 'B':'TOpen', 'C':'TPCLOSE', 'D':'TPrice', 'E':'THigh', 'F':'TLow', 'I':'TVol', 'J':'TAmt', 'e':'TDate', 'f':'TTime'}, inplace=True)
quote_df = quote_df.ix[:,[0,3,2,1,4,5,8,9,30,31]]
이렇게
columns = ['STK', 'TPrice', 'TPCLOSE', 'TOpen', 'THigh', 'TLow', 'TVol', 'TAmt', 'TDate', 'TTime']
df = pd.read_csv(StringIO(str_of_all), sep=',', usecols=[0,3,2,1,4,5,8,9,30,31])
df.columns = columns
이렇게 하면 그 이름을 제대로 읽기 전용 열을 관심이 있습니다. 마법을 사용할 수 있도록 해야 할 것들 '' 객체에는 트리스 사악함이라 필요는 없습니다.
나는 여기서 직접 질문에 대답. 어떻게 대처할 것인가.
복사 (깊이형 = False) '' 하고 나면 가공합니다. 참조 프란다s.다태프라머스코프.
import pandas as pd
df = pd.DataFrame({'x':[1,2,3]})
따라서 경고에는:
df0 = df[df.x>2]
df0['foo'] = 'bar'
아닙니다.
df1 = df[df.x>2].copy(deep=False)
df1['foo'] = 'bar'
그런데 뭔가 다테프라임 df1 '이' 모두 'df0' 와 '다르다' 오브젝트에도 경고야 인쇄하려면 수 있는 이들에 대한 판다 # 39 의 let& 알아 볼 수 없다.
import inspect
slice= df[df.x>2]
slice_copy = df[df.x>2].copy(deep=False)
inspect.getmembers(slice)
inspect.getmembers(slice_copy)
Diff 툴을 사용하여 선택할 수 있는 것을 볼 수 있습니다, 이 차이는 몇 가지 주소 이외의 유일한 재료:
| | slice | slice_copy |
| _is_copy | weakref | None |
여부를 결정하는 '는' DataFrame._check_setitem_copy 경고자로서 _is_copy 확인하는 방법 ''. 그래서 여기. '' 아니다 '' 할 수 있도록 복제본에 다테프라임 _is_copy.
'경고' 를 사용하는 것으로 사용할 수 있다 ',' 프레임에 트로스 신앙이니라 트로스 _is_copy ',' 같은 경고야 계속 될 것입니다. 잘못된? 예. 귀찮게? 너회가 내기하죠 도움됐네? 따라서 체인된 할당에서는 때 사용된다. 체인 할당에서는 탐지합니다 경고 및 유인물 무차별적으로 제대로 수는 없다.
할 수 없는 깊은 복제본이므로 슬라이스에 분리하십시오, 내 해결책은 아닌 일반 복제본입니다. 이 컨텍스트로 따라 적용될 수 없습니다 (메모리 구속 / 크기 슬라이스에 잠재력이 성능 저하 - 특히 루프가 발생할 경우 복제본에 없었던 것과 비슷한 가져다줄래요, etc.)
여기에 스크램블된 선택해제합니다 경고 받았습니다.
/opt/anaconda3/lib/python3.6/site-packages/ipykernel/__main__.py:54:
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
난 이미 경고를 던진 것은 확실히 알 수 있는 열 때문에 나는 이 드롭하기 대한 복제본이므로 가공합니다. 엄밀히 말해 하고 있는 값을 설정할 수 있으며, 그것은 여전히 복제본이므로 슬라이스에 수정 복제본이므로 가공합니다. 다음은 (간체) 단계를 수행됨을 혐의를 확인하는 데 도움이 될 것이라고 나는 그 오른길로 파악하기 위해 바란다 "라고 경고했다.
하지만 이것은 우리가 이미 알고 있는 건강한 알림. 어떤 이는 경고 없는 수준이다.
>> data1 = {'A': [111, 112, 113], 'B':[121, 122, 123]}
>> df1 = pd.DataFrame(data1)
>> df1
A B
0 111 121
1 112 122
2 113 123
>> df2 = df1
>> df2
A B
0 111 121
1 112 122
2 113 123
# Dropping a column on df1 affects df2
>> df1.drop('A', axis=1, inplace=True)
>> df2
B
0 121
1 122
2 123
변경 내용을 df1 df2 영향을 피할 수 있습니다
>> data1 = {'A': [111, 112, 113], 'B':[121, 122, 123]}
>> df1 = pd.DataFrame(data1)
>> df1
A B
0 111 121
1 112 122
2 113 123
>> import copy
>> df2 = copy.deepcopy(df1)
>> df2
A B
0 111 121
1 112 122
2 113 123
# Dropping a column on df1 does not affect df2
>> df1.drop('A', axis=1, inplace=True)
>> df2
A B
0 111 121
1 112 122
2 113 123
사실은 이 경고야 보여줍니다.
>> data1 = {'A': [111, 112, 113], 'B':[121, 122, 123]}
>> df1 = pd.DataFrame(data1)
>> df1
A B
0 111 121
1 112 122
2 113 123
>> df2 = df1
>> df2
A B
0 111 121
1 112 122
2 113 123
# Dropping a column on df2 can affect df1
# No slice involved here, but I believe the principle remains the same?
# Let me know if not
>> df2.drop('A', axis=1, inplace=True)
>> df1
B
0 121
1 122
2 123
변경 내용을 df2 df1 영향을 피할 수 있습니다
>> data1 = {'A': [111, 112, 113], 'B':[121, 122, 123]}
>> df1 = pd.DataFrame(data1)
>> df1
A B
0 111 121
1 112 122
2 113 123
>> import copy
>> df2 = copy.deepcopy(df1)
>> df2
A B
0 111 121
1 112 122
2 113 123
>> df2.drop('A', axis=1, inplace=True)
>> df1
A B
0 111 121
1 112 122
2 113 123
건배!
이 항목은 정말 혼란스럽다 함께 판다. 다행히 비교적 단순한 솔루션 가지고 있다.
문제는 항상 여부는 명확하지 않다. (예를 들면 loc) 또는 데이터 필터링 운영체 복귀하십시오 복사됩니다 보기입니다 다테프라임. 그러므로 이러한 필터링됨 다테프라임 사용할 수 있어 혼란스럽다.
간단한 솔루션은 (대용량 데이터 집합을 작동하도록 하는 경우를 제외하고):
필요할 때마다 항상 모든 값뿐만 업데이트하려면 전에 할당에서는 다테프라임 복사합니다를 임플리치텔리 합니다.
"'
df = 드f.록 [:, 0:2] # 일부 필터링 (잘 모름 서버인지에 보거나 복제본에 반환됨) df = 드프리코프 () 는 브라운아저씨의 복제본에 # 보장 df [df [" Name";] = " John";] = " Johny"; # 할당에서는 지금 할 수 있습니다 (no warning)
일부는 단순히 정렬할지 억제할지 경고:
class SupressSettingWithCopyWarning:
def __enter__(self):
pd.options.mode.chained_assignment = None
def __exit__(self, *args):
pd.options.mode.chained_assignment = 'warn'
with SupressSettingWithCopyWarning():
#code that produces warning
변수 및 설정할 수 있으면 슬라이스에 지정받습니다 변수를 사용하여 다음과 같이.
df2 = df[df['A'] > 2]
df2['B'] = value
진실이며당신이 제프스 있으므로 사용하지 않는 컴퓨팅 솔루션 '은' 장기 또는 다른 이유로 인해, 다음 조건을 df2 다음 사용할 수 있습니다.
df.loc[df2.index.tolist(), 'B'] = value
모든 항목에서 지수 () ',' df2.index.tolist 되돌려줍니다 df2 데 사용될 수 있는 B 세트 열 중 원본 다테프라임.
이 문제가 발생 다음 날 위해 > simplified<; 예. 그리고 난 역시 이를 해결할 수 있었다 (용이하게 할 수 있는 최적의 솔루션을):
이전 코드와 경고:
def update_old_dataframe(old_dataframe, new_dataframe):
for new_index, new_row in new_dataframe.iterrorws():
old_dataframe.loc[new_index] = update_row(old_dataframe.loc[new_index], new_row)
def update_row(old_row, new_row):
for field in [list_of_columns]:
# line with warning because of chain indexing old_dataframe[new_index][field]
old_row[field] = new_row[field]
return old_row
이 인쇄했습니다 old_row [필드] = new_row [필드] '선의' 경고
이후 시리즈 '유형' 에 맞춰, 내가 실제로 행뿐만 update_row 메서드로부터 교체했습니다.
old_row.at[field] = new_row.at[field]
즉, 방법 에 대해 액세스을 / 조회 '시리즈'. 그 결과, 이렇게 두 작동됩니다 에 있는데도, 내가 없는 # 39 는 동일한 don& 비활성화하려면 개의경고 (= 렉시한테서 그들을 위해 다른 곳에서 다른 체인 인덱스화를 문제).
이 사람을 도울 수 있으면 좋겠다.
이런 모든 문제를 피할 수 있습니다 (i believe.
return (
pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) #dtype={'A': object, 'B': object, 'C': np.float64}
.rename(columns={'A':'STK', 'B':'TOpen', 'C':'TPCLOSE', 'D':'TPrice', 'E':'THigh', 'F':'TLow', 'I':'TVol', 'J':'TAmt', 'e':'TDate', 'f':'TTime'}, inplace=True)
.ix[:,[0,3,2,1,4,5,8,9,30,31]]
.assign(
TClose=lambda df: df['TPrice'],
RT=lambda df: 100 * (df['TPrice']/quote_df['TPCLOSE'] - 1),
TVol=lambda df: df['TVol']/TVOL_SCALE,
TAmt=lambda df: df['TAmt']/TAMT_SCALE,
STK_ID=lambda df: df['STK'].str.slice(13,19),
STK_Name=lambda df: df['STK'].str.slice(21,30)#.decode('gb2312'),
TDate=lambda df: df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10]),
)
)
사용하여 지정. [문서용으로] 에서 1: 되돌릴 수 있는 새로운 객체 (a copy) 를 새 열을 할당할지 다테프라임 모든 원본 열 외에도 새로운 수준들과.
아마 설명 (나 같은 다른 초보자 (I come from alt+r 조금 다르게 작동합니까 후드 아래에 있는 것으로 보인다). 다음 해가 보이는 및 기능적 코드 세팅비스코프 경고, 난 왜 계속 파악, t # 39 couldn& 생산하고 있다. 난 이미 읽고 이해할 수 있지만, 모두 함께 발행, 체인된 indexing" " doesn& # 39, t, 내 코드를 포함할:
def plot(pdb, df, title, **kw):
df['target'] = (df['ogg'] + df['ugg']) / 2
# ...
그런데, 나중에 내가 훨씬 늦었음요, 바라볼 수 있는 플롯할 () 함수를 호출됨:
df = data[data['anz_emw'] > 0]
pixbuf = plot(pdb, df, title)
그래서 " df"; # 39 는 데이터 프레임을 isn& 기억하고 있는 것은 물론, 객체에 의해 생성된 데이터 프레임을 색인화하기 짐작이지만요. (그래서 에로남이네 보기입니다?) 플롯할 () 에 있는 줄 수 있을 것
df['target'] = ...
같습니다
data[data['anz_emw'] > 0]['target'] = ...
이는 체인된 인덱스화를. 내가 바로 확보하십시오?
어쨌든,
def plot(pdb, df, title, **kw):
df.loc[:,'target'] = (df['ogg'] + df['ugg']) / 2
고정식입니다 거잖나.