小编bal*_*n16的帖子

Pandas 将列名从一个数据帧复制到另一个

假设我们有两个熊猫数据框。第一个没有列名:

no_col_names_df = pd.DataFrame(np.array([[1,2,3], [4,5,6], [7,8,9]]))
Run Code Online (Sandbox Code Playgroud)

第二个有:

col_names_df = pd.DataFrame(np.array([[10,2,3], [4,45,6], [7,18,9]]),
                           columns=['col1', 'col2', 'col3'])
Run Code Online (Sandbox Code Playgroud)

我想要做的是让副本列来自col_names_dfno_col_names_df这样下的数据帧创建:

    col1    col2    col3
0   1       2       3
1   4       5       6
2   7       8       9
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

new_df_with_col_names = pd.DataFrame(data=no_col_names_df, columns=col_names_df.columns)
Run Code Online (Sandbox Code Playgroud)

但不是来自no_col_names_dfI getNaN的值。

python columnname dataframe pandas

13
推荐指数
2
解决办法
2万
查看次数

Python 从 JSON 文件创建树

假设我们有以下 JSON 文件。为了示例起见,它是由字符串模拟的。字符串是输入,Tree对象应该是输出。我将使用树的图形表示法来呈现输出。

我发现以下类可以在 Python 中处理树概念:

class TreeNode(object):
    def __init__(self, data):
        self.data = data
        self.children = []

    def add_child(self, obj):
        self.children.append(obj)

    def __str__(self, level=0):
        ret = "\t"*level+repr(self.data)+"\n"
        for child in self.children:
            ret += child.__str__(level+1)
        return ret

    def __repr__(self):
        return '<tree node representation>'

class Tree:
    def __init__(self):
        self.root = TreeNode('ROOT')

    def __str__(self):
        return self.root.__str__()
Run Code Online (Sandbox Code Playgroud)

输入文件可以具有不同的复杂性:

简单案例

输入:

json_file = '{"item1": "end1", "item2": "end2"}'

输出:

"ROOT"
    item1
        end1
    item2
        end2
Run Code Online (Sandbox Code Playgroud)

嵌入式案例

输入:

json_file = {"item1": "end1", "item2": {"item3": "end3"}}

输出: …

python tree recursion json

7
推荐指数
1
解决办法
2万
查看次数

保存并加载keras.callbacks.History

我正在使用Keras训练深度神经网络,并寻找一种方法来保存并稍后加载类型的历史对象keras.callbacks.History.这是设置:

history_model_1 = model_1.fit_generator(train_generator,
                          steps_per_epoch=100,
                          epochs=20,
                          validation_data=validation_generator,
                          validation_steps=50)
Run Code Online (Sandbox Code Playgroud)

history_model_1 是我希望在另一个Python会话期间保存和加载的变量.

python generator deep-learning keras

6
推荐指数
3
解决办法
5592
查看次数

ggplot:使用scale_fill_gradient获取离散图例

我正在尝试重新创建“R Graphics Cookbook”第 87 页中的示例图。

在此输入图像描述

我尝试使用以下代码重新创建,但没有得到结果:

library(ggplot2)
library(hexbin)

sp <- ggplot(diamonds, aes(x=carat, y=price))
sp + stat_binhex() +
  scale_fill_gradient(low="lightblue", high="red",
                      breaks=c(0, 250, 500, 1000, 2000, 4000, 6000),
                      limits=c(0, 6000)) 
Run Code Online (Sandbox Code Playgroud)

这使

在此输入图像描述

gradient r legend ggplot2

5
推荐指数
1
解决办法
4472
查看次数

带有注释列的 R plotly Sankey 图

我正在尝试创建一个带注释的 Sankey 图。我希望最终版本沿着这个手动注释的图表的方向看:

在此处输入图片说明

获取桑基图的简单部分:

sankey_diagram <- plot_ly(
    type = "sankey",
    orientation = "h",

    node = list(
      label = c("Node_A_1", "Node_A_2", "Node_B_2", "Node_B_3", "Node_C_1", "Node_C_2"),
      color = c("blue", "blue", "blue", "blue", "blue", "blue"),
      pad = 15,
      thickness = 35,
      line = list(
        color = "black",
        width = 0.5
      )
    ),

    link = list(
      source = c(0,1,0,2,3,3),
      target = c(2,3,3,4,4,5),
      value =  c(8,4,2,8,4,2)
    )
  ) %>% 
  layout(
    font = list(
      size = 15
    )
)
Run Code Online (Sandbox Code Playgroud)

起初我想,如果我想获得带注释的“列”,我应该转向 plotly 文档的注释部分。注释的问题在于它们在空间上仅限于(至少我认为是)图形的区域。这是基于注释的方法中的代码:

# properties that hide …
Run Code Online (Sandbox Code Playgroud)

r subplot plotly sankey-diagram

5
推荐指数
0
解决办法
805
查看次数

R dplyr 的 group_by 也考虑空组

让我们考虑以下数据框:

set.seed(123)
data <- data.frame(col1 = factor(rep(c("A", "B", "C"), 4)),
                   col2 = factor(c(rep(c("A", "B", "C"), 3), c("A", "A", "A"))),
                   val1 = 1:12,
                   val2 = rnorm(12, 10, 15))
Run Code Online (Sandbox Code Playgroud)

应急表如下:

cont_tab <- table(data$col1, data$col2, dnn = c("col1", "col2"))

cont_tab

    col2
col1 A B C
   A 4 0 0
   B 1 3 0
   C 1 0 3
Run Code Online (Sandbox Code Playgroud)

如您所见,有些对没有出现:(A,B)、(A,C)、(B,C)、(C,B)。我分析的最终目标是列出所有对(在本例中为 9)并显示每个对的统计数据。在使用dplyr::group_by()函数时,我遇到了一个限制。即,dplyr::group_by()只考虑现有对(至少出现一次的对):

data %>%
  group_by(col1, col2) %>%
  summarize(stat = sum(val2) - sum(val1))

# A tibble: 5 x 3
# Groups:   col1 [?] …
Run Code Online (Sandbox Code Playgroud)

group-by r dplyr

3
推荐指数
1
解决办法
1153
查看次数

为什么 openpyxl 创建名为“Sheet1”的工作表?

openpyxl默认情况下,即使我指定应使用索引 0 创建工作表,也会创建名称为“Sheet1”的电子表格。我确信这不是一个重复的问题。文档说openpyxl支持2010 MS Office版本,但我使用的是office365 pro。您能提供任何帮助或建议吗?

请注意,独立代码对我来说工作得很好,但是当相同的代码与其他代码集成时,我遇到了下面描述的问题。我已经尝试了很多事情。由于我是 Python 新手,看起来有些东西我不知道。如果我指定索引 1,则会创建两张工作表:一张带有名称Sheet,另一张带有我提供的名称。如果我提供索引 0,则只会Sheet1创建一张具有名称的工作表。

下面的代码应在索引 0 处创建名为 name 的工作表test

            for r in range(3, rowcount + 1):
                for c in range(1, columncount + 1):
                    final_path = first_part + str(r) + second_part + str(c) + third_part
                    table_data = self.driver.find_element_by_xpath(final_path).text

                    fname = r"{}_{}.xlsx".format(str(i[1]), str(i[2]))
                    if (os.path.exists(fname)):
                        workbook = openpyxl.load_workbook(fname)
                        worksheet = workbook[fname]
                    else:
                        workbook = Workbook()
                        worksheet= workbook.create_sheet(fname,0)
                        #worksheet = workbook.active
                        #worksheet.title = fname
                    worksheet.cell(row=r,column=c).value = table_data …
Run Code Online (Sandbox Code Playgroud)

python office365 openpyxl

2
推荐指数
1
解决办法
7876
查看次数

带有使用 label_parsed 的表达式的 R 分面标签

我尝试使用 label_parsed 将表达式放入构面标签中,但没有成功:

library(ggplot2)
mpg3 <- mpg
levels(mpg3$drv)[levels(mpg3$drv)=="4"] <- "4^{wd}"
levels(mpg3$drv)[levels(mpg3$drv)=="f"] <- "- Front %.% e^{pi * i}"
levels(mpg3$drv)[levels(mpg3$drv)=="r"] <- "4^{wd} - Front"


ggplot(mpg3, aes(x=displ, y=hwy)) + geom_point() +
  facet_grid(. ~ drv, labeller = label_parsed)
Run Code Online (Sandbox Code Playgroud)

我得到的图缺少表达式 - 方面标签包含 drv 变量原始级别。

如果我输入,levels(mpg3$drv)我会得到character(0)

label r facet ggplot2

0
推荐指数
1
解决办法
1836
查看次数

理解列表与 for 循环的复杂性

我在 Python 中有两种算法,它们将元组列表转换为字典:

  def _prep_high_low_data_for_view(self, low_high_list):
    dates = []
    prices = []
    lables = []
    for (x, y, z) in low_high_list:
        dates.append(x)
        prices.append(y)
        lables.append(z)

    return {'date': dates,
            'price': prices,
            'label': lables
            }
Run Code Online (Sandbox Code Playgroud)

第二个是:

    def _prep_high_low_data_for_view(self, low_high_list):
    return {'date': [date for date, _, _ in low_high_list],
            'price': [price for _, price, _ in low_high_list],
            'label': [lable for _, _, lable in low_high_list],
            }
Run Code Online (Sandbox Code Playgroud)

两种算法就它们的作用而言是等效的。是不是第二种算法在复杂度方面更差,因为有三个单独的列表推导式?

python python-3.x

0
推荐指数
1
解决办法
838
查看次数