Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:“;ValueError:缓冲区的维度数错误(预期为1,实际为0)_Python_Python 3.x_Pandas - Fatal编程技术网

Python 熊猫:“;ValueError:缓冲区的维度数错误(预期为1,实际为0)

Python 熊猫:“;ValueError:缓冲区的维度数错误(预期为1,实际为0),python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在尝试在dataframe中基于现有列的算术创建新列。以下工作很好: df_2016 = pd.DataFrame(np.random.rand(10,1), columns=['current']) df_future = pd.DataFrame(columns={'2017e', '2018e'}) i = 1 inflation = 0.02 for column in df_future: df_future[column] = df_2016 *(1+inflation)*

我正在尝试在dataframe中基于现有列的算术创建新列。以下工作很好:

df_2016 = pd.DataFrame(np.random.rand(10,1), columns=['current'])
df_future = pd.DataFrame(columns={'2017e', '2018e'})
i = 1
inflation = 0.02
for column in df_future:
   df_future[column] = df_2016 *(1+inflation)**i
   i = i + 1
但当我尝试创建更长的列序列时:

df_future2 = 'bl2021 bl2022 bl2023 bl2024 bl2025 bl2026 bl2027 bl2028 bl2029 bl2030 bl2031 bl2032 bl2033 bl2034 bl2035 bl2036 bl2037 bl2038 bl2038 \
    bl2039 bl2040 bl2041 bl2042 bl2043 bl2044 bl2045 bl2046 bl2047 bl2048 bl2049 bl2050'
df_future2 = df_future2.split()
df_future2 = pd.DataFrame(columns=df_future2)
for column in df_future2:
  df_future2[column] = df_2016 * (1 + inflation) ** i
  i = i + 1
我得到:

ValueError: Buffer has wrong number of dimensions (expected 1, got 0)

我不明白。有什么好主意吗?

您不必预先分配数据帧。只需边走边添加列:

future2 = 'bl2021 bl2022 bl2023 bl2024 bl2025 bl2026 bl2027 bl2028 bl2029 bl2030 bl2031 bl2032 bl2033 bl2034 bl2035 bl2036 bl2037 bl2038 bl2038 \
    bl2039 bl2040 bl2041 bl2042 bl2043 bl2044 bl2045 bl2046 bl2047 bl2048 bl2049 bl2050'
column_names = future2.split()
df_future2 = pd.DataFrame()
for column in column_names:
  df_future2[column] = df_2016 * (1 + inflation) ** i
  i = i + 1

您不必预先分配数据帧。只需边走边添加列:

future2 = 'bl2021 bl2022 bl2023 bl2024 bl2025 bl2026 bl2027 bl2028 bl2029 bl2030 bl2031 bl2032 bl2033 bl2034 bl2035 bl2036 bl2037 bl2038 bl2038 \
    bl2039 bl2040 bl2041 bl2042 bl2043 bl2044 bl2045 bl2046 bl2047 bl2048 bl2049 bl2050'
column_names = future2.split()
df_future2 = pd.DataFrame()
for column in column_names:
  df_future2[column] = df_2016 * (1 + inflation) ** i
  i = i + 1

您是否在df_future2中放入了任何数据?没有。马丁在下面的回答解决了这个问题。你有没有把任何数据放在《未来2》里面?没有,我没有。下面马丁的回答解决了这个问题。效果很好!非常感谢。工作起来很有魅力!非常感谢。