【发布时间】:2020-08-01 08:08:21
【问题描述】:
我想在不使用df.loc 的情况下向熊猫数据框追加一行。我正在寻找类似于列表中使用的.append() 方法的东西。
我目前正在这样做,但我正在寻找不同的解决方案:
stupid_table = pd.DataFrame(columns=['max_depth', 'features'])
for max_depth in np.arange(50, 101):
new_row = pd.DataFrame({'max_depth':[max_depth], 'features':[10]})
stupid_table = pd.concat([stupid_table, new_row], axis=0)
我想将new_row 声明为列表或熊猫系列,而不是熊猫数据框。有没有办法使以下语法起作用?
stupid_table = pd.DataFrame(columns=['max_depth', 'features'])
for max_depth in np.arange(50, 101):
new_row = [max_depth, 10]
stupid_table = pd.concat([stupid_table, new_row], axis=0)
我特别想这样做,因为我想要追加新行的真实数据框有很多列,我懒得把新行写成字典。我宁愿在列表中输入数字。我经常这样做,更方便的语法会为我的心理健康带来奇迹。
编辑:我不喜欢使用.loc,因为我的 for 循环正在获取 numpy 数组中的每个值。将当前语法切换为 for value in range(len(np.arange(start, stop))) 以使 for 循环使用索引,然后我必须将组合转换为数值,因为在实际示例中,我有大量组合。我不想那样做。
【问题讨论】:
-
这能回答你的问题吗? Add one row to pandas DataFrame。简短的版本是你可以
stupid_table.append([{'max_depth': max_depth, 'features': 10}])。更长的版本是,这是非常低效,您可能应该(1)使用loc,尽管您不喜欢这样做,或者(2)构建一个字典列表,然后将它们转换为pd.DataFrame最后。 -
你能解释一下这个操作是什么意思吗?
标签: python pandas dataframe concatenation