Sha*_*e S 5 python dataframe pandas
我将我的 Pandas 从我认为是 1.5.1 更新到了 2.0.1。无论如何,我开始在一些以前运行良好的代码上出现错误。
df = df.groupby(df['date'].dt.date)['Lake', 'Canyon'].mean().reset_index()
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):文件“f:...\My_python_file.py”,第 37 行,in df = df.groupby(df['date'].dt.date)['Lake', 'Canyon' ].mean().reset_index() 文件“C:\Users...\Local\Programs\Python\Python310\lib\site-packages\pandas\core\groupby\generic.py”,第 1767 行,在getitem raise中ValueError( ValueError: 无法使用包含多个元素的元组对列进行子集化。请改用列表。
Cor*_*ien 14
如果不使用双括号选择多列,则之前的版本Pandas < 2.0.0会引发 aFutureWarning
FutureWarning:使用多个键进行索引(隐式转换为键元组)将被弃用,请改用列表
从Pandas >= 2.0.0,它提出了ValueError:
ValueError:无法将列与包含多个元素的元组进行子集化。请改用列表。
例如:
# Pandas < 2.0.0
# Missing [[ ... ]] --v --v
>>> df.groupby(df['date'].dt.date)['Lake', 'Canyon'].mean().reset_index()
...
FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.
df.groupby(df['date'].dt.date)['Lake', 'Canyon'].mean().reset_index()
# Pandas >= 2.0.0
>>> df.groupby(df['date'].dt.date)['Lake', 'Canyon'].mean().reset_index()
...
ValueError: Cannot subset columns with a tuple with more than one element. Use a list instead.
Run Code Online (Sandbox Code Playgroud)
使用以下方法修复此问题[[col1, col2, ...]]:
>>> df.groupby(df['date'].dt.date)[['Lake', 'Canyon']].mean().reset_index()
date Lake Canyon
0 2023-05-02 1.5 3.5
Run Code Online (Sandbox Code Playgroud)
最小可重复示例:
import pandas as pd
df = pd.DataFrame({'date': ['2023-05-02 12:34:56', '2023-05-02 12:32:12'],
'Lake': [1, 2], 'Canyon': [3, 4]})
df['date'] = pd.to_datetime(df['date'])
print(df)
# Output
date Lake Canyon
0 2023-05-02 12:34:56 1 3
1 2023-05-02 12:32:12 2 4
Run Code Online (Sandbox Code Playgroud)