小编Kri*_*ler的帖子

Pandas 错误:__setitem__() 无法将字典值识别为列名列表

编辑:看起来这是 Pandas 中的一个潜在错误。查看@NicMoetsch 提出的这个 GitHub问题,注意到使用字典值分配的意外行为与框架__setitem__()__getitem__().


在我之前的代码中,我用字典重命名了一些列:

cols_dict = {
     'Long_column_Name': 'first_column',
     'Other_Long_Column_Name': 'second_column',
     'AnotherLongColName': 'third_column'
}
for key, val in cols_dict.items():
    df.rename(columns={key: val}, inplace=True)
Run Code Online (Sandbox Code Playgroud)

(我知道这里不需要循环——在我的实际代码中,我必须在数据帧列表中搜索数据帧的列,并获得字典键的子字符串匹配。)

后来我做了一些清理applymap(),索引字典值,它工作正常

pibs[cols_dict.values()].applymap(
    lambda x: np.nan if ':' in str(x) else x
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将切片分配回自身时,我收到一个关键错误(此处为完整错误消息)。

pibs[cols_dict.values()] = pibs[cols_dict.values()].applymap(
    lambda x: np.nan if ':' in str(x) else x
)
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/.local/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3079             try:
-> 3080                 return self._engine.get_loc(casted_key) …
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas keyerror

8
推荐指数
1
解决办法
199
查看次数

将 Pandas 数据框列和索引转换为值

我有一个“是/否”格式的数据框,例如

    7   22
1   NaN t
25  t   NaN
Run Code Online (Sandbox Code Playgroud)

其中“t”代表是,我需要将其转换为 XY 表,因为列名是 X 坐标,索引是 Y 坐标:

  X  Y
1 22  1
2  7 25
Run Code Online (Sandbox Code Playgroud)

一个伪代码,如:

if a cell = "t":
     newdf.X = df.column(t)
     newdf.Y = df.index(t)
Run Code Online (Sandbox Code Playgroud)

python transformation dataframe pandas

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

在Python/Pandas中将dtype“object”的所有列转换为“float”

我想将数据框中的所有“对象”类型列转换为另一种数据类型(浮点数),而不需要对列名称进行硬编码。我能够从其他似乎有效的答案中拼凑出一些代码,但我觉得必须有一种更简单的方法来做到这一点。

# Creating isolating columns of object data type
object_cols = df.loc[:, df.dtypes == 'O']

# Extracting column names with list comprehension
object_type_columns = [col for col in object_cols.columns]

# Converting column types of .astype in a for loop
for col in object_type_columns:
  df[col] = df[col].astype(float)
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了任何信息,请告诉我(我是新手)。谢谢!

python type-conversion pandas

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

在 Python 列表中保留两个、跳过两个

我有一个 Python 列表

num_list = list(range(1,33))
Run Code Online (Sandbox Code Playgroud)

并且需要列表中的所有其他数字对,如下所示:

[1, 2, 5, 6, 9, 10 ... ]
Run Code Online (Sandbox Code Playgroud)

我已经弄清楚如何从列表中排除某些索引,就像这样

num_list[2::3]

> [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Run Code Online (Sandbox Code Playgroud)

但还没有弄清楚如何让它一次捕获两个索引。

python indexing list

4
推荐指数
1
解决办法
1194
查看次数