μλ λ μ λͺ¨λ λμΌν μ€λ₯λ‘ μ€ν¨ν©λλ€.
df = pd.DataFrame(index=[0, 1, 2], columns=['a', 'b'])
df.loc[0, 'a'] = dict(x=2)
df.iloc[0, 0] = dict(x=2)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-282-62f3ee5ff885> in <module>()
1 # file_map.loc[file_no, 'Q_step_length'] = dict(a=1)
2 df = pd.DataFrame(index=[0, 1, 2], columns=['a', 'b'])
----> 3 df.iloc[0, 0] = dict(x=2)
4 df['a'] = df['a'].apply(lambda x: x[0] if not pd.isnull(x) else x)
5 df
...\lib\site-packages\pandas\core\indexing.py in __setitem__(self, key, value)
177 key = com._apply_if_callable(key, self.obj)
178 indexer = self._get_setitem_indexer(key)
--> 179 self._setitem_with_indexer(indexer, value)
180
181 def _has_valid_type(self, k, axis):
...\lib\site-packages\pandas\core\indexing.py in _setitem_with_indexer(self, indexer, value)
603
604 if isinstance(value, (ABCSeries, dict)):
--> 605 value = self._align_series(indexer, Series(value))
606
607 elif isinstance(value, ABCDataFrame):
...\lib\site-packages\pandas\core\indexing.py in _align_series(self, indexer, ser, multiindex_indexer)
743 return ser.reindex(ax)._values
744
--> 745 raise ValueError('Incompatible indexer with Series')
746
747 def _align_frame(self, indexer, df):
ValueError: Incompatible indexer with Series
μ΄κ²μ μλνμ§λ§ λͺ©λ‘μ λ°μ΄ν° νλ μμ λ°°μΉν©λλ€.
df[0, 'a'] = [dict(x=2)]
λ€μκ³Ό κ°μ΄ λ§€μ° λΆμμ°μ€λ¬μ΄ ꡬμ±μ μ¬μ©νμ¬ λ°μ΄ν° νλ μμμ μ§μ μ¬μ μ κ°μ Έμ¬ μ μμ΅λλ€.
df['a'] = df['a'].apply(lambda x: x[0] if not pd.isnull(x) else x)
λ°μ΄ν° νλ μμ dictλ₯Ό μ μ₯ν μ μμΌλ―λ‘ μμ κ°μ΄ ν λΉμ μλνλ©΄ μ€ν¨νμ§ μμ΅λλ€. λλ df.loc[...] = dict(...) κ° μ‘΄μ¬νλ κ²½μ° ν΄λΉ μ΄μ dictμ κ°μ ν λΉνκ³ (λ¬Έμνλμ΄ μμ΅λκΉ?) μ체 λ¬Έμ κ° μλ€λ κ²μ μκ³ μμ§λ§ μ‘μΈμ€ν λ μ΄ λμμ΄ μ μ©λμ§ μμμΌ ν©λλ€. λ°μ΄ν° νλ μμ λ¨μΌ μμΉ
μ§μ λ μμΉ λ΄λΆμ μ¬μ μ΄ μλ λ°μ΄ν° νλ μ.
pd.show_versions()
μ μΆλ ₯컀λ°: μμ
νμ΄μ¬: 3.5.4.final.0
νμ΄μ¬ λΉνΈ: 64
μ΄μ 체μ : μλμ°
OS 릴리μ€: 10
κΈ°κ³: AMD64
νλ‘μΈμ: Intel64 μ νκ΅° 6 λͺ¨λΈ 58 μ€ν
ν 9, μ ν μΈν
λ°μ΄νΈ μ€λ: μ‘°κΈ
LC_ALL: μμ
λ: μμ
LOCALE: μμ.μμ
ν¬λ: 0.20.3
νμ΄ν
μ€νΈ: μμ
ν: 9.0.1
μ€μ λꡬ: 36.5.0
μ¬μ΄μ¬: 0.26
μ«μ: 1.13.1
μ¬μ΄νΌ: 0.19.1
xarray: μμ
μμ΄νμ΄μ¬: 6.1.0
μ€νν¬μ€: μμ
ν¨ν°: 0.4.1
λ μ§ μ νΈλ¦¬ν°: 2.6.1
νΌμΈ : 2017.2
λΈλ‘: μμ
λ³λͺ© νμ: μμ
ν
μ΄λΈ: μμ
numexpr: μμ
κΉνΈ: μμ
맀νΈν둯립: 2.0.2
openpyxl: μμ
xlrd: μμ
xlwt: μμ
xlsxwriter: μμ
lxml: μμ
bs4: μμ
html5lib: 0.9999999
sqlalchemy: μμ
pymysql: μμ
psycopg2: μμ
μ§μ2: 2.9.6
s3fs: μμ
pandas_gbq: μμ
pandas_datareader: μμ
μ΄κ²μ λ§€μ° λΉ κ΄μ©μ μ΄λ©° μ¬κΈ°μμ κ±°μ νΌμμ λλ€. μ£Όμμ λͺ©λ‘/ννμ μ¬μ©νμ¬ μνν μ μμ΅λλ€.
In [14]: df.loc[0, 'a'] = [dict(x=2)]
In [15]: df
Out[15]:
a b
0 [{'x': 2}] NaN
1 NaN NaN
2 NaN NaN
κ°μ λ¬Έμ κ° λ°μνμ¬ λ κ°μ§ μκ°μ νμ΅λλ€.
DataFrame λ΄μ μ¬μ μ μ μ₯νλ κ²μ λλ¬Έ μΌμ΄μ§λ§, ν¨λ ννμ μ ν©ν λ°©μμΌλ‘ λ°μ΄ν°κ° μΈλ±μ±λλ μμμ ν€/κ° μ€νμΌ λ°μ΄ν°λ₯Ό νννκ³ μ‘°μνλ λ°©λ²μΌλ‘ μννΈμ¨μ΄κ° Pandasλ₯Ό μ¬μ©ν μ μλ μ ν¨ν κ²½μ°κ° μμ΅λλ€.
μμΉ κΈ°λ° μΈλ±μ±μ΄ μ 곡λ μ¬μ μ ν€/κ°μ κΈ°λ°μΌλ‘ μ΄μ μ λ°μ΄νΈνλ λμμ λμκ² λλΌμ΄ μΌμ΄μμ΅λλ€. μ΄κ²μ λͺ μμ μ΄μ΄ μ°Έμ‘°λμ§ μμ λ μλ―Έκ° μλ λ©μ§ νΈμ κΈ°λ₯μ λλ€. μλ₯Ό λ€μ΄ λ€μμ μ 곡ν λ:
df.loc[row, :] = dict(key1=value1, key2=value2)
μ¬μ μ ν€λ μ΄λ‘ μμ±λ μ μκ³ df.loc[row, key1] == value1
λ μλ―Έκ° μμ΅λλ€. κ·Έλ¬λ λͺ
μμ μ΄ μΈλ±μ€λ₯Ό μ 곡ν λ μ 곡λ μ¬μ μμ λμ μ΄μ μ μΆνλ κ²μ (μ μκ²) μ§κ΄μ μ΄μ§ μμ΅λλ€. λ΄κ° λμ μ 곡νλ κ²½μ°:
df.loc[row, col] = dict(key=value)
col
μ΄μ μ 체 κ°μ μ μ₯νκ³ μΆκ³ μ¬μ μ΄ μλ κ·Έλλ‘ μ½μ
λκΈ°λ₯Ό κΈ°λνλ€λ κ²μ λͺ
μμ μΌλ‘ λνλ
λλ€.
μ΄μ¨λ , λλ μ΄κ²μ΄ λ€μ κ΄μ©μ μ΄μ§ μλ€λ @jreback μ λμνμ§λ§ @andreas-thomikμ΄ μ κΈ°ν μλ λ¬Έμ μ 곡κ°ν©λλ€. μ΄ κ΅¬λ¬Έμ μ¬μ©νμ¬ λ°μ΄ν° νλ μμ μμμ λμ λ리λ₯Ό μ μ₯νλ €κ³ μλνλ κ²μ΄ λ΄κ° μ§λ©΄ν νΉμ λ¬Έμ μ λν΄ μ΄ν΄κ° λλ λ¬Έμ κ° λ°μνμ΅λλ€. κ·Έλμ κ·Έλ μ΄ μμ²μ λν΄ μ μ μΌλ‘ νΌμκ° μλλλ€.
@aaclayton μ΄κ²μ #18955μ κ΄λ ¨μ΄ μμ΅λλ€. μ°λ¦¬λ dictsμ μ€μ μ€μΉΌλΌλ₯Ό λ μ μ§μν μ/μμ΄μΌ ν©λλ€(λ° κΈ°ν λ°λ³΅ κ°λ₯). μ‘°κΈ κΉλ€λ‘μ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
κ°μ λ¬Έμ κ° λ°μνμ¬ λ κ°μ§ μκ°μ νμ΅λλ€.
DataFrame λ΄μ μ¬μ μ μ μ₯νλ κ²μ λλ¬Έ μΌμ΄μ§λ§, ν¨λ ννμ μ ν©ν λ°©μμΌλ‘ λ°μ΄ν°κ° μΈλ±μ±λλ μμμ ν€/κ° μ€νμΌ λ°μ΄ν°λ₯Ό νννκ³ μ‘°μνλ λ°©λ²μΌλ‘ μννΈμ¨μ΄κ° Pandasλ₯Ό μ¬μ©ν μ μλ μ ν¨ν κ²½μ°κ° μμ΅λλ€.
μμΉ κΈ°λ° μΈλ±μ±μ΄ μ 곡λ μ¬μ μ ν€/κ°μ κΈ°λ°μΌλ‘ μ΄μ μ λ°μ΄νΈνλ λμμ λμκ² λλΌμ΄ μΌμ΄μμ΅λλ€. μ΄κ²μ λͺ μμ μ΄μ΄ μ°Έμ‘°λμ§ μμ λ μλ―Έκ° μλ λ©μ§ νΈμ κΈ°λ₯μ λλ€. μλ₯Ό λ€μ΄ λ€μμ μ 곡ν λ:
df.loc[row, :] = dict(key1=value1, key2=value2)
μ¬μ μ ν€λ μ΄λ‘ μμ±λ μ μκ³
df.loc[row, key1] == value1
λ μλ―Έκ° μμ΅λλ€. κ·Έλ¬λ λͺ μμ μ΄ μΈλ±μ€λ₯Ό μ 곡ν λ μ 곡λ μ¬μ μμ λμ μ΄μ μ μΆνλ κ²μ (μ μκ²) μ§κ΄μ μ΄μ§ μμ΅λλ€. λ΄κ° λμ μ 곡νλ κ²½μ°:df.loc[row, col] = dict(key=value)
col
μ΄μ μ 체 κ°μ μ μ₯νκ³ μΆκ³ μ¬μ μ΄ μλ κ·Έλλ‘ μ½μ λκΈ°λ₯Ό κΈ°λνλ€λ κ²μ λͺ μμ μΌλ‘ λνλ λλ€.μ΄μ¨λ , λλ μ΄κ²μ΄ λ€μ κ΄μ©μ μ΄μ§ μλ€λ @jreback μ λμνμ§λ§ @andreas-thomikμ΄ μ κΈ°ν μλ λ¬Έμ μ 곡κ°ν©λλ€. μ΄ κ΅¬λ¬Έμ μ¬μ©νμ¬ λ°μ΄ν° νλ μμ μμμ λμ λ리λ₯Ό μ μ₯νλ €κ³ μλνλ κ²μ΄ λ΄κ° μ§λ©΄ν νΉμ λ¬Έμ μ λν΄ μ΄ν΄κ° λλ λ¬Έμ κ° λ°μνμ΅λλ€. κ·Έλμ κ·Έλ μ΄ μμ²μ λν΄ μ μ μΌλ‘ νΌμκ° μλλλ€.