Nhiệm vụ đơn giản là thêm một hàng vào một pandas.DataFrame
đối tượng dường như khó thực hiện. Có 3 câu hỏi stackoverflow liên quan đến vấn đề này, không có câu hỏi nào đưa ra câu trả lời hoạt động.
Đây là những gì tôi đang cố gắng làm. Tôi có một DataFrame mà tôi đã biết hình dạng cũng như tên của các hàng và cột.
>>> df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'])
>>> df
a b c d
x NaN NaN NaN NaN
y NaN NaN NaN NaN
z NaN NaN NaN NaN
Bây giờ, tôi có một hàm để tính toán các giá trị của các hàng lặp đi lặp lại. Làm cách nào tôi có thể điền vào một trong các hàng bằng từ điển hoặc từ điển pandas.Series
? Dưới đây là những nỗ lực khác nhau đã thất bại:
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df['y'] = y
AssertionError: Length of values does not match length of index
Rõ ràng nó đã cố gắng thêm một cột thay vì một hàng.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.join(y)
AttributeError: 'builtin_function_or_method' object has no attribute 'is_unique'
Thông báo lỗi rất không thông tin.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.set_value(index='y', value=y)
TypeError: set_value() takes exactly 4 arguments (3 given)
Rõ ràng đó chỉ là để thiết lập các giá trị riêng lẻ trong khung dữ liệu.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.append(y)
Exception: Can only append a Series if ignore_index=True
Chà, tôi không muốn bỏ qua chỉ số, nếu không đây là kết quả:
>>> df.append(y, ignore_index=True)
a b c d
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 1 5 2 3
Nó đã căn chỉnh tên cột với các giá trị, nhưng mất nhãn hàng.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.ix['y'] = y
>>> df
a b \
x NaN NaN
y {'a': 1, 'c': 2, 'b': 5, 'd': 3} {'a': 1, 'c': 2, 'b': 5, 'd': 3}
z NaN NaN
c d
x NaN NaN
y {'a': 1, 'c': 2, 'b': 5, 'd': 3} {'a': 1, 'c': 2, 'b': 5, 'd': 3}
z NaN NaN
Điều đó cũng thất bại thảm hại.
Vậy bạn sẽ làm sao ?
loc
thuộc tính của khung dữ liệu định nghĩa một đặc biệt__setitem__
mà tôi cho là phép thuật.