gpt4 book ai didi

python - apply 函数中的动态数据框列名称

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:22 25 4
gpt4 key购买 nike

我正在使用当前的数据框:

df = pd.DataFrame({'columnA':[1111,1111,2222,3333,4444,4444,5555,6666],
'columnB':['AAAA','AAAA','BBBB','AAAA','BBBB','BBBB','AAAA','BBBB'],
'columnC':['one','two','one','one','one','sales','two','one'],
'NUM1':[1,3,5,7,1,0,4,5],
'NUM2':[5,3,6,9,2,4,1,1],
'W':list('aaabbbbb')})

我正在尝试在以下代码中使用动态列:

#First aggregate the data
d = {'columnB':'unique', 'columnC':'unique' }
df2 = df.groupby('columnA').agg(d)


#Convert list to string for each cell of the inventory field
mylist = ["columnB","columnC"]
for x in mylist:
columnName = x
#print("df2."+columnName+".apply(', '.join)")
df2[columnName] = df2[columnName].apply(', '.join)

并且它在 Jupyter 中运行良好。我的问题是当我在 VisualStudio 上运行它时它不起作用。我收到此错误:

sequence item 0: expected str instance, float found

打印数据框的类型后我得到这个:

<class 'pandas.core.frame.DataFrame'>

以下是完整的错误消息:

Traceback (most recent call last): File "stage1.py", line 112, in main() File "stage1.py", line 57, in main templateScenarios[columnName] = templateScenarios[columnName].apply(', '.join) File "/Users/apolo.siskos/anaconda3/lib/python3.6/site-packages/pandas/core/series.py", line 2355, in apply mapped = lib.map_infer(values, f, convert=convert_dtype) File "pandas/_libs/src/inference.pyx", line 1574, in pandas._libs.lib.map_infer TypeError: sequence item 0: expected str instance, float found

最佳答案

NaN 值存在问题,因此可以通过 dropna 删除它们,并使用带有 join 的自定义函数:

df = pd.DataFrame({'columnA':[1111,1111,2222,3333,4444,4444,5555,6666],
'columnB':[np.nan,np.nan,'BBBB','AAAA','BBBB','BBBB','AAAA','BBBB'],
'columnC':['one','two','one','one','one','sales','two','one'],
'NUM1':[1,3,5,7,1,0,4,5],
'NUM2':[5,3,6,9,2,4,1,1],
'W':list('aaabbbbb')})

f = lambda x: ', '.join(x.dropna().unique())
d = {'columnB': f, 'columnC':f}
df2 = df.groupby('columnA').agg(d)
print (df2)
columnB columnC
columnA
1111 one, two
2222 BBBB one
3333 AAAA one
4444 BBBB one, sales
5555 AAAA two
6666 BBBB one

关于python - apply 函数中的动态数据框列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48629253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com