[英]Pandas Dataframe Question: Apply function add new column with results
[英]Add a static list to a new Pandas Dataframe column via apply
我有一個復雜的函數,為Pandas
dataframe
每一行生成一個list
。 我想將該list
設為名為mylist
的新列中每行的值。
Pandas執行此操作的能力似乎取決於起始數據幀中的列數。
import pandas as pd
df = pd.DataFrame(data=[['A', 'D'],
['B', 'E'],
['C', 'F']],
columns=['col1', 'col2'])
df1 = pd.DataFrame(data=[['A', 'D', 'G'],
['B', 'E', 'H'],
['C', 'F', 'I']],
columns=['col1', 'col2', 'col3'])
def add_list(row):
return [1,3, 3]
df['mylist'] = df.apply(add_list, axis=1)
print df
收益率:
col1 col2 list
0 A D [1, 3, 3]
1 B E [1, 3, 3]
2 C F [1, 3, 3]
此附加代碼產生ValueError: Wrong number of items passed 3, placement implies 1
。 為什么起始dataframe
的列數會產生影響?
df1['mylist'] = df1.apply(add_list, axis=1)
print df1
如果我將函數更改為以下(添加一個元素),則沒有錯誤:
def add_list(row):
return [1,3, 3, 4]
預期產量:
col1 col2 col3 list
0 A D G [1, 3, 3]
1 B E H [1, 3, 3]
2 C F I [1, 3, 3]
這是奇怪的行為。 一個解決方案似乎是返回一個元組而不是一個列表。
def add_list(row):
return (1, 3, 3)
df1['mylist'] = df1.apply(add_list, axis=1).apply(list)
在最后一行中,您會注意到元組在數據幀中轉換為列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.