您可以同时选择并分配 pandas DataFrame 中的列吗?

使用 R 中的 data.table,您可以同时选择和分配列。假设有一个包含 3 列的 data.table:col1、col2 和 col3。可以使用 data.table 执行以下操作:

dt2 <- dt[, .(col1, col2, newcol = 3, anothercol = col3)]

我想在 pandas 中做类似的事情,但看起来需要 3 行。

df2 = df.copy()
df2['newcol'] = 3
df2.rename(columns = {"col3" : "anothercol"})

有没有更简洁的方法来完成我上面所做的事情?


梵蒂冈之花
浏览 106回答 3
3回答

翻阅古今

这可能有效:import pandas as pdddict = {&nbsp; &nbsp; &nbsp; &nbsp; 'col1':['A','A','B','X'],&nbsp; &nbsp; &nbsp; &nbsp; 'col2':['A','A','B','X'],&nbsp; &nbsp; &nbsp; &nbsp; 'col3':['A','A','B','X'],&nbsp; &nbsp; &nbsp; &nbsp; }df = pd.DataFrame(ddict)df.loc[:, ['col1', 'col2', 'col3']].rename(columns={"col3":"anothercol"}).assign(newcol=3)结果:&nbsp; col1 col2 anothercol&nbsp; newcol0&nbsp; &nbsp; A&nbsp; &nbsp; A&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A&nbsp; &nbsp; &nbsp; &nbsp;31&nbsp; &nbsp; A&nbsp; &nbsp; A&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A&nbsp; &nbsp; &nbsp; &nbsp;32&nbsp; &nbsp; B&nbsp; &nbsp; B&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; B&nbsp; &nbsp; &nbsp; &nbsp;33&nbsp; &nbsp; X&nbsp; &nbsp; X&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; X&nbsp; &nbsp; &nbsp; &nbsp;3

月关宝盒

您可以df.assign为此使用:例子 :>>> df = pd.DataFrame({'temp_c': [17.0, 25.0]},                  index=['Portland', 'Berkeley'])>>> df          temp_cPortland    17.0Berkeley    25.0>>> df.assign(temp_f=lambda x: x.temp_c * 9 / 5 + 32)          temp_c  temp_fPortland    17.0    62.6Berkeley    25.0    77.0>>> df.assign(newcol=3).rename(columns={"temp_c":"anothercol"}          anothercol  newcolPortland        17.0       3Berkeley        25.0       3然后您可以将其分配给df2. 

函数式编程

我不知道 R,但我看到的是您正在添加一个名为 的新列,newcol该列的所有行的值为 3。您还将列从col3重命名为anothercol。你真的不需要执行该copy步骤。df2&nbsp;=&nbsp;df.rename(columns&nbsp;=&nbsp;{'col3':&nbsp;'anothercol'}) df2['newcol']&nbsp;=&nbsp;3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python