亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您可以同時選擇并分配 pandas DataFrame 中的列嗎?

您可以同時選擇并分配 pandas DataFrame 中的列嗎?

梵蒂岡之花 2023-10-31 16:34:00
使用 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"})有沒有更簡潔的方法來完成我上面所做的事情?
查看完整描述

3 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

這可能有效:


import pandas as pd


ddict = {

        'col1':['A','A','B','X'],

        'col2':['A','A','B','X'],

        'col3':['A','A','B','X'],

        }


df = pd.DataFrame(ddict)


df.loc[:, ['col1', 'col2', 'col3']].rename(columns={"col3":"anothercol"}).assign(newcol=3)

結果:


  col1 col2 anothercol  newcol

0    A    A          A       3

1    A    A          A       3

2    B    B          B       3

3    X    X          X       3


查看完整回答
反對 回復 2023-10-31
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

您可以df.assign為此使用:


例子 :


>>> df = pd.DataFrame({'temp_c': [17.0, 25.0]},

? ? ? ? ? ? ? ? ? index=['Portland', 'Berkeley'])


>>> df

? ? ? ? ? temp_c

Portland? ? 17.0

Berkeley? ? 25.0


>>> df.assign(temp_f=lambda x: x.temp_c * 9 / 5 + 32)

? ? ? ? ? temp_c? temp_f

Portland? ? 17.0? ? 62.6

Berkeley? ? 25.0? ? 77.0


>>> df.assign(newcol=3).rename(columns={"temp_c":"anothercol"}

? ? ? ? ? anothercol? newcol

Portland? ? ? ? 17.0? ? ? ?3

Berkeley? ? ? ? 25.0? ? ? ?3

然后您可以將其分配給df2.?

查看完整回答
反對 回復 2023-10-31
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

我不知道 R,但我看到的是您正在添加一個名為 的新列,newcol該列的所有行的值為 3。
您還將列從col3重命名為anothercol
你真的不需要執行該copy步驟。

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


查看完整回答
反對 回復 2023-10-31
  • 3 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號