在if循环中重命名熊猫条目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在if循环中重命名熊猫条目相关的知识,希望对你有一定的参考价值。
我有一个看起来像这样的数据框:
appended_data
...
...
Out[24]:
Unnamed: 0 Region GeneID DistanceValue
229676 229676 8.0 69013161 0.972237
229677 229677 8.0 75931496 0.978386
229678 229678 8.0 73424023 0.982667
229679 229679 8.0 74736195 0.987057
280716 280716 10.0 69782778 0.971998
... ... ... ...
1097355 1097355 42.0 633685 0.972917
1097356 1097356 42.0 68301216 0.974058
1097357 1097357 42.0 100146162 0.977017
1097358 1097358 42.0 74734794 0.985398
1097359 1097359 42.0 633694 0.992054
[136 rows x 4 columns]
我想在if循环中重命名Region中的条目:
像..区域42应该成为图层名称的42.条目的名称。我尝试过:
import pandas as pd
appended_data = pd.read_csv('/home/anja/0415_pyversion.csv')
with open('/home/anja/Schreibtisch/Master/ABA/layer2_names.txt') as f:
layernames = [line.strip() for line in f.read().split('\n')]
for i in range(43):
if (appended_data.Region == i).all:
(appended_data.Region == i).all = layernames[i]
我尝试过,没有错误消息,但我的条目未重命名。
..如果愿意
print((appended_data.Region == i).all)
我得到:
Name: Region, Length: 136, dtype: bool>
<bound method Series.all of 229676 False
229677 False
229678 False
229679 False
280716 False
1097355 True
1097356 True
1097357 True
1097358 True
1097359 True
Name: Region, Length: 136, dtype: bool>
答案
Series.map
[如果您曾经使用for i in range(..)
作为迭代器,则应作为内置迭代器的Python发出警告,可以通过enumerate
进行访问
您尚未给出有关图层名称的最小示例,但似乎是列表。
我们可以将map函数与字典配合使用,并进行一次一次性操作来替换所有区域名称。s
设置
import pandas as pd
s = ['a','b','c'] # your layer_name list.
layer_dict = k : v for (k,v) in enumerate(s)
# 0: 'a', 1: 'b', 2: 'c'
df = pd.DataFrame([0,1,2],columns=list('A'))
实际中:
df['B'] = df['A'].map(layer_dict)
print(df)
A B
0 0 a
1 1 b
2 2 c
以上是关于在if循环中重命名熊猫条目的主要内容,如果未能解决你的问题,请参考以下文章