`DataFrame.to_csv()` hat ein `mode`-Argument, man kann die Datei also auch zum anhängen weiterer Daten öffnen statt sie zu überschreiben.
mode = 'a' wird zum Anhängen verwendet. Ich habe versuch, dass zu implementieren aber leider funktioniert es nicht.
Code: Alles auswählen
Import pandas as pd
Import os
x1, x2, x3, x4 = 0, 0, 0, 0
index = 0
for i in range(3):
x1 += 2
x2 += 2
x3 += 2
x4 += 2
df=pd.DataFrame([i + 1,x1,x2,x3,x4],columns=['Index','Data1','Data2','Data3','Data4'])
df.to_csv('data.csv',index=False,mode='a')
Ich erhalte die Fehlermeldung:
Code: Alles auswählen
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py in create_block_manager_from_blocks(blocks, axes)
1677 blocks = [
-> 1678 make_block(values=blocks[0], placement=slice(0, len(axes[0])))
1679 ]
~/anaconda3/lib/python3.7/site-packages/pandas/core/internals/blocks.py in make_block(values, placement, klass, ndim, dtype, fastpath)
3266
-> 3267 return klass(values, ndim=ndim, placement=placement)
3268
~/anaconda3/lib/python3.7/site-packages/pandas/core/internals/blocks.py in __init__(self, values, placement, ndim)
127 "Wrong number of items passed {val}, placement implies "
--> 128 "{mgr}".format(val=len(self.values), mgr=len(self.mgr_locs))
129 )
ValueError: Wrong number of items passed 1, placement implies 5
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-43-0d8c3526372c> in <module>
11 x3 += 2
12 x4 += 2
---> 13 df=pd.DataFrame([index,x1,x2,x3,x4],columns=['Index','Data1','Data2','Data3','Data4'])
14 df.to_csv('data.csv',index=False,mode='a')
~/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
462 mgr = arrays_to_mgr(arrays, columns, index, columns, dtype=dtype)
463 else:
--> 464 mgr = init_ndarray(data, index, columns, dtype=dtype, copy=copy)
465 else:
466 mgr = init_dict({}, index, columns, dtype=dtype)
~/anaconda3/lib/python3.7/site-packages/pandas/core/internals/construction.py in init_ndarray(values, index, columns, dtype, copy)
211 block_values = [values]
212
--> 213 return create_block_manager_from_blocks(block_values, [columns, index])
214
215
~/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py in create_block_manager_from_blocks(blocks, axes)
1686 blocks = [getattr(b, "values", b) for b in blocks]
1687 tot_items = sum(b.shape[0] for b in blocks)
-> 1688 construction_error(tot_items, blocks[0].shape[1:], axes, e)
1689
1690
~/anaconda3/lib/python3.7/site-packages/pandas/core/internals/managers.py in construction_error(tot_items, block_shape, axes, e)
1717 raise ValueError("Empty data passed with indices specified.")
1718 raise ValueError(
-> 1719 "Shape of passed values is {0}, indices imply {1}".format(passed, implied)
1720 )
1721
ValueError: Shape of passed values is (5, 1), indices imply (5, 5)
Hast du eine Idee wo der Fehler liegt?