Amy*_*ski 7 python dataframe pandas
任何人都可以帮助解释为什么当pandas.DataFrame.
最小的、可重现的示例
import pandas as pd
df = pd.DataFrame(columns=['a', 'b', 'b'])
Run Code Online (Sandbox Code Playgroud)
如果我尝试插入一个列表,column 'a'我会收到一个关于维度不匹配的错误:
df.loc[:, 'a'] = list(range(5))
Traceback (most recent call last):
...
ValueError: cannot copy sequence with size 5 to array axis with dimension 0
Run Code Online (Sandbox Code Playgroud)
类似于'b':
df.loc[:, 'b'] = list(range(5))
Traceback (most recent call last):
...
ValueError: could not broadcast input array from shape (5) into shape (0,2)
Run Code Online (Sandbox Code Playgroud)
但是,如果我插入到一个全新的列中,则不会出现错误,除非我插入'a'或'b':
df.loc[:, 'c'] = list(range(5))
print(df)
a b b c
0 NaN NaN NaN 0
1 NaN NaN NaN 1
2 NaN NaN NaN 2
3 NaN NaN NaN 3
4 NaN NaN NaN 4
df.loc[:, 'a'] = list(range(5))
Traceback (most recent call last):
...
ValueError: Buffer has wrong number of dimensions (expected 1, got 0)
Run Code Online (Sandbox Code Playgroud)
如果我删除重复的列,所有这些错误都会消失 'b'
附加信息
pandas==1.0.2
小智 1
为什么使用 loc 而不仅仅是:
df['a'] = list(range(5))
Run Code Online (Sandbox Code Playgroud)
这不会给出任何错误,并且似乎会产生您需要的内容:
a b b
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
Run Code Online (Sandbox Code Playgroud)
创建列 c 相同:
df['c'] = list(range(5))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |