编辑:看起来这是 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) 我有一个“是/否”格式的数据框,例如
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) 我想将数据框中的所有“对象”类型列转换为另一种数据类型(浮点数),而不需要对列名称进行硬编码。我能够从其他似乎有效的答案中拼凑出一些代码,但我觉得必须有一种更简单的方法来做到这一点。
# 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 列表
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)
但还没有弄清楚如何让它一次捕获两个索引。