cuốn sách gpt4 ai đã làm

python - TypeError: Đối số vị trí với pandas.Applies

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 02:58:43 26 4
mua khóa gpt4 Nike

Tuyên bố vấn đề:

một chuỗi cột khung dữ liệu gấu trúc,cùng_nhóm Cần phải dựa trên hai cột hiện có hàng ngangcol Giá trị được tạo từ giá trị bool. Nếu hai giá trị có trong từ điển tư cách thành viên Nếu có các giá trị tương tự (giá trị giao nhau) trong hàng thì hàng đó cần hiển thị True, nếu không thì là Sai (không có giá trị giao nhau). sử dụng pd.apply() đưa ra lỗi:

TypeError: ('checkGrouping() nhận 2 đối số vị trí nhưng 3 đối số đã được đưa ra', 'xảy ra ở hàng chỉ mục')

cài đặt:

nhập gấu trúc dưới dạng pd
nhập numpy dưới dạng np
n = np.nan
tư cách thành viên = {'a':['nguyên âm'], 'b':['phụ âm'], 'c':['phụ âm'], 'd':['phụ âm'], 'e':['nguyên âm '], 'y':['phụ âm', 'nguyên âm']}

đồng dư = pd.DataFrame.from_dict(
{'hàng': ['a','b','c','d','e','y'],
'a': [n, -.8,-.6,-.3, .8, .01],
'b': [-.8, n, .5, .7,-.9, .01],
'c': [-.6, .5, n, .3, .1, .01],
'd': [-.3, .7, .3, n, .2, .01],
'e': [ .8,-.9, .1, .2, n, .01],
'y': [ .01, .01, .01, .01, .01, n],
}).set_index('hàng')
congruent.columns.names = ['col']

đoạn dữ liệu cs

cs = congruent.stack().to_frame()
cs.columns = ['điểm']
cs.reset_index(inplace=True)
cs.head(6)

đoạn dữ liệu cs được xếp chồng lên nhau

Mục tiêu mong muốn:

bản vẽ đẹp nhất của cột gấu trúc được thêm vào

Tạo chuỗi bool:

Hãy thử 0:

def checkGrouping(row, col):
nếu hàng trong member.keys() và col trong member.keys():
trả về tư cách thành viên[row].intersection(set(memberships[col]))
khác:
trở về np.nan


cs['same_group'] = cs.apply(checkGrouping,args=(cs['row'], cs['col']))

Có vẻ như tôi đang hướng tới kiểm traNhóm cung cấp args Vậy tại sao tôi lại gặp phải lỗi này và cách khắc phục?

câu trả lời hay nhất

# tạo một chuỗi để thuận tiện cho việc lập bản đồ
# biến mỗi thành viên thành một tập hợp để tôi có thể giao nhau sau này
lkp = pd.Series(thành viên).apply(set)

#lấy số hàng và cột
# ánh xạ các tập hợp tới các chỉ số cột và hàng
n, m = đồng dư.hình dạng
c = congruent.columns.to_series().map(lkp).values
r = congruent.index.to_series().map(lkp).values

in(c)
[{'nguyên âm'} {'phụ âm'} {'phụ âm'} {'phụ âm'} {'nguyên âm'}
{'phụ âm', 'nguyên âm'}]

in(r)
[{'nguyên âm'} {'phụ âm'} {'phụ âm'} {'phụ âm'} {'nguyên âm'}
{'phụ âm', 'nguyên âm'}]

# sử dụng np.repeat, np.tile, zip để tạo tích Descartes
# cái này phải khớp với chỉ mục sau khi xếp chồng
# áp dụng giao điểm tập hợp cho mỗi cặp
# tập trống là Sai, ngược lại là Đúng
giống nhau = [
bool(set.intersection(*tup))
cho tup trong zip(np.repeat(r, m), np.tile(c, n))
]

# sử dụng dropna=False để đảm bảo chúng tôi duy trì
#cartesianproductTôi đã mong đợi
# sau đó cắt bằng danh sách boolean tôi đã tạo
#anddropna
congruent.stack(dropna=False)[same].dropna()

hàng cột
ae 0,80
năm 0,01
trước Công nguyên 0,50
d 0,70
năm 0,01
cb 0,50
d 0,30
năm 0,01
db 0,70
c0,30
năm 0,01
ea 0,80
năm 0,01
ừ 0,01
b 0,01
c0,01
d 0,01
e 0,01
dtype: float64

tạo ra kết quả mong muốn

congruent.stack(dropna=False).reset_index(name='Score') \
.sign(same_group=np.array(same).astype(int)).dropna()

nhập mô tả hình ảnh ở đây

Về python - TypeError: Đối số vị trí với gấu trúc có thể áp dụng, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/41620262/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress