在 Pandas 的特定位置创建新列 [重复]
Posted
技术标签:
【中文标题】在 Pandas 的特定位置创建新列 [重复]【英文标题】:Creating a new column in a specific place in Pandas [duplicate] 【发布时间】:2020-09-16 07:12:09 【问题描述】:我想在 Python 中创建一个新列并放置在特定位置。例如,让“示例”为以下数据框:
import pandas as pd
example = pd.DataFrame(
'name': ['alice','bob','charlie'],
'age': [25,26,27],
'job': ['manager','clerk','policeman'],
'gender': ['female','male','male'],
'nationality': ['french','german','american']
)
我想创建一个新列来包含“年龄”列的值:
example['age_times_two']= example['age'] *2
然而,这段代码在数据框的末尾创建了一个列。我想把它放在第三列,或者换句话说,放在“年龄”列旁边的列。这是怎么做到的:
a) 通过为新列设置一个绝对位置(例如第三个位置)?
b) 通过为新列设置一个相对位置(例如“年龄”列的右侧)?
【问题讨论】:
你想要的输出是什么样的? 【参考方案1】:您可以在此处使用df.insert
。
example.insert(2,'age_times_two',example['age']*2)
example
name age age_times_two job gender nationality
0 alice 25 50 manager female french
1 bob 26 52 clerk male german
2 charlie 27 54 policeman male american
【讨论】:
令人惊讶的是,我根本不使用pd.DataFrame.insert
。 +1 好答案。
将此问题添加为书签仅用于“df.insert”方法。 ++1。确实是很好的答案。
注意插入功能只能使用一次。再次运行它会给出 ValueError。【参考方案2】:
另一种方法:
example['age_times_two']= example['age'] *2
cols = example.columns.tolist()
cols = cols[:2]+cols[-1:]+cols[2:-1]
example = example[cols]
print(example)
.
name age age_times_two job gender nationality
0 alice 25 50 manager female french
1 bob 26 52 clerk male german
2 charlie 27 54 policeman male american
【讨论】:
【参考方案3】:这有点手动:
example['age_times_two']= example['age'] *2
cols = list(example.columns.values)
cols
你会得到一个所有列的列表,你可以手动重新排列它们并将它们放在下面的代码中
example = example[['name', 'age', 'age_times_two', 'job', 'gender', 'nationality']]
【讨论】:
以上是关于在 Pandas 的特定位置创建新列 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Pandas df 操作:如果其他列行重复,则带有值列表的新列 [重复]
将来自一个数据框的值合并到 Pandas 中的新列中[重复]