小编AGH*_*ORN的帖子

将多个词典组合成一个长格式的pandas数据帧

我有几个字典设置如下:

Dict1 = {'Orange': ['1', '2', '3', '4']}
Dict2 = {'Red': ['3', '4', '5']}
Run Code Online (Sandbox Code Playgroud)

我希望输出是一个组合数据帧:

| Type | Value |
|--------------|
|Orange|   1   |
|Orange|   2   |
|Orange|   3   |
|Orange|   4   |
| Red  |   3   |
| Red  |   4   |
| Red  |   5   |
Run Code Online (Sandbox Code Playgroud)

我尝试将所有内容拆分,但我只在此数据帧中获得Dict2.

mydicts = [Dict1, Dict2]
for x in mydicts:
    for k, v in x.items():
        df = pd.DataFrame(v)
        df['Type'] = k
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas

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

将总和行添加到数据框中的特定列

我有一个数据框,

df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123, 
                    'count': 12}, {'project': 123457, 'date': '08/07/2019', 
                    'total': 124, 'count': 13}, {'project': 123458, 'date': 
                    '08/07/2019', 'total': 125, 'count': 14}])
Run Code Online (Sandbox Code Playgroud)

我想将总行添加到仅totalcount列的底部。我知道我能做到

df.loc['Total'] = df.sum(numeric_only=True)
Run Code Online (Sandbox Code Playgroud)

但我的project列是数字,我不需要Total底行的单词,只需要这两列的总和。有什么方法可以删除该单词并确保仅对这两列进行求和?

python pandas

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

从数据帧单元格中的字符串中删除单词/字符?

我有一个包含街道交叉口的列的数据框

|          Locations           |
--------------------------------
|W Madison Ave & S Randall Blvd|
|N Clemson St & E Tower Ave    |
|E Thompson St & S Garfield Ln |
Run Code Online (Sandbox Code Playgroud)

我想删除方向字符(N、S、E、W)以及街道的后缀(Blvd、St、Ave 等...),以便我的输出看起来像这样

|     Locations     |
---------------------
|Madison & Randall  |
|Clemson & Tower    |
|Thompson & Garfield|
Run Code Online (Sandbox Code Playgroud)

我不能这样做,str.replace()因为它会从我需要留下的单词中删除字符。我尝试使用lstrip()andrstrip()但这不会修复我想从字符串中间删除的字符。

我也尝试过 Series.apply()

banned = ['N', 'S', 'E', 'W', 'Ave', 'Blvd', 'St', 'Ln']
df["Locations"].apply(lambda x: [item for item in x if item not in banned])
Run Code Online (Sandbox Code Playgroud)

但这本质上是做 astr.replace()并将所有内容放在数据框中的列表中。

python pandas

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

将字符串的特定部分转换为大写?

我有一个DataFrame,我想只使字符串的特定部分用下划线后面的大写字母.

|         TYPE       |  NAME  |
|-----------------------------|
| Contract Employee  | John   |
| Full Time Employee | Carol  |
| Temporary Employee | Kyle   |
Run Code Online (Sandbox Code Playgroud)

我希望单词"Contract"和"Temporary"在这个单词之前和之后用下划线写成大写:

|         TYPE         |  NAME  |
|-------------------------------|
| _CONTRACT_ Employee  | John   |
| Full Time Employee   | Carol  |
| _TEMPORARY_ Employee | Kyle   |
Run Code Online (Sandbox Code Playgroud)

我尝试使用str.upper(),但这使整个单元格大写,我只是寻找那些特定的单词.

编辑:如果重要的话,我有时应该提到这些词没有大写.通常它会显示为temporary employee而不是Temporary Employee.

python pandas

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

仅将匹配的列附加到数据框

我有一种“主”数据框,我只想将另一个数据框中的匹配列附加到

df:
  A  B  C
  1  2  3

df_to_append:
  A  B  C  D  E
  6  7  8  9  0
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用时df.append(),它还将不匹配的列附加到 df。

df = df.append(df_to_append, ignore_index=True)
Out:
A  B  C   D   E
1  2  3  NaN NaN
6  7  8   9   0
Run Code Online (Sandbox Code Playgroud)

但是我想要的输出是删除列 D 和 E,因为它们不是原始数据帧的一部分?也许我需要使用pd.concat?我不认为我可以使用,pd.merge因为我没有任何独特的东西可以合并。

python dataframe pandas

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

使用 xlsxwriter 仅格式化带有数据的标题

worksheet.set_row()我在通过仅应用于包含数据的列来获取格式时遇到了一些麻烦。就目前情况而言,当我打开工作簿时,格式会应用于整个标题行,甚至超过数据停止的位置,这看起来有点草率,请参见下文:

在此输入图像描述

正如您所看到的,格式化继续到 AL、AM、AN、AO 等列...由于这些列(或与此相关的标题)中没有数据,因此看起来有点草率。

我之前使用以下命令将格式应用于工作簿中的每个工作表:

header = workbook.add_format({'bold': True, 'bottom': 2, 'bg_color': '#F9DA04'})
worksheet.set_row(0, None, header)
Run Code Online (Sandbox Code Playgroud)

我明白这是因为worksheet.set_row()使用行索引。我找不到任何关于这个范围的文档,我可以以某种方式指定A1:AK1或类似的东西吗?如果重要的话,每个工作表都是使用 Pandas 的多个数据帧的结果pd.concat()

python pandas xlsxwriter

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

正则表达式匹配多个空格之间的所有组

我有一个字符串

198.21 543 G110P0GHTT SAW GHA + DBA 11998

我想匹配空格之间的所有字符串组。到目前为止,我已经想出了(?<=\s)(.*?)(?=\s)除了第一组之外的所有匹配项。此外,这不计GHA + DBA为一个组。我可以添加什么以确保它包含第一条记录以及超过一个空间的任何内容

regex

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

标签 统计

pandas ×6

python ×6

dataframe ×2

dictionary ×1

regex ×1

xlsxwriter ×1