DrM*_*sha 5 python dataframe pandas
我有一个Pandas DataFrame,我正在逐行创建(我知道,我知道,它不是Pandorable/Pythonic ......).我使用创建元素的.loc像这样
output.loc[row_id, col_id]
Run Code Online (Sandbox Code Playgroud)
我想将此值设置为空列表[].
output.loc[row_id, col_id] = []
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到一个错误,说我的钥匙和值不匹配的大小(熊猫认为我试图设定值与不来的迭代).
有没有办法做到这一点?
谢谢!
小智 9
您可以使用pd.at代替:
df = pd.DataFrame()
df['B'] = [1, 2, 3]
df['A'] = None
df.at[1, 'A'] = np.array([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
当您使用 时pd.loc,pandas 认为您正在与一组行进行交互。因此,如果您尝试使用 分配数组pd.loc,pandas 会尝试将数组的每个元素与由 访问的相应元素进行匹配pd.loc,因此会出现错误。
你需要确定两件事:
一个hacky方法是使用带[]的系列:
In [11]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
In [12]: df.loc[[0], 'A'] = pd.Series([[]])
In [13]: df
Out[13]:
A B
0 [] 2
1 3 4
Run Code Online (Sandbox Code Playgroud)
大熊猫并不真的希望你[]用作元素,因为它通常不那么有效,并且使聚合更复杂(并且不可用于cythonisable).
一般来说,你不想逐个单元地构建DataFrame,有(几乎?)总是更好的方法.
| 归档时间: |
|
| 查看次数: |
5395 次 |
| 最近记录: |