将计算列添加到 csv 文件
add computed column to a csv file
我希望这不是一个经典的初学者问题。然而,我阅读并花了几天时间试图保存我的 csv 数据,但没有成功。
我有一个函数使用我手动提供的输入参数。该函数生成 3 列,我保存在 CSV 文件中。当我想将该函数与其他输入一起使用并保存从先前计算的列右侧分配的新数据时,结果是 pandas 将我的 CSV 文件排序为 3 个单列,一个在一个下面,标题。
我正在使用下一个代码来保存我的数据:
data.to_csv('/Users/Computer/Desktop/Examples anaconda/data_new.csv', sep=',',mode='a')
结果是:
dot lake mock
1 42 11.914558
2 41 42.446977
3 40 89.188668
dot lake mock
1 42 226.266513
2 41 317.768887
dot lake mock
3 42 560.171830
4. 41. 555.005333
我想要的是:
dot lake mock mock mock
0 42 11.914558. 226.266513. 560.171830
1 41 42.446977. 317.768887. 555.005533
2 40 89.188668
更新:
我的 DataFrame 是使用这样的函数生成的:
首先我打开了一个csv文件:
df1=pd.read_csv('current_state.csv')
def my_function(df1, photos, coords=['X', 'Y']):
Hzs = t.copy()
shifts = np.floor(Hzs / t_step).astype(np.int)
ms = np.zeros(shifts.size)
delta_inv = np.arange(N+1)
dot = delta_inv[N:0:-1]
lake = np.arange(1,N+1)
for i, shift in enumerate(shifts):
diffs = df1[coords] - df1[coords].shift(-shift)
sqdist = np.square(diffs).sum(axis=1)
ms[i] = sqdist.sum()
mock = np.divide(ms, dot)
msds = pd.DataFrame({'dot':dot, 'lake':lake, 'mock':mock})
return msds
data = my_function(df1, photos, coords=['X', 'Y'])
print(data)
data.to_csv('/Users/Computer/Desktop/Examples anaconda/data_new.csv', sep=',',mode='a'
我花了几天时间寻找在包含多个计算列的 csv 文件中编写的方法,该文件恰好与下一个列相邻。甚至一些家伙的不愉快的评论!我终于找到了如何做到这一点。如果有人需要类似的东西:
首先我使用 to_csv
:
保存我的数据
data.to_csv('/Users/Computer/Desktop/Examples/data_new.csv', sep=',',mode='a', index=False)
在文件已经用 headers 生成后,我删除了不需要的索引,我只调用了最后使用的函数:
b = data
a = pd.read_csv('data_new.csv')
c = pd.concat ([a,b],axis=1, ignore_index=True)
c.to_csv('/Users/Computer/Desktop/Examples/data_new.csv', sep=',', index=False)
结果我得到了所需的 CSV 文件,并且可以在您想要的时间调用该函数!
我希望这不是一个经典的初学者问题。然而,我阅读并花了几天时间试图保存我的 csv 数据,但没有成功。
我有一个函数使用我手动提供的输入参数。该函数生成 3 列,我保存在 CSV 文件中。当我想将该函数与其他输入一起使用并保存从先前计算的列右侧分配的新数据时,结果是 pandas 将我的 CSV 文件排序为 3 个单列,一个在一个下面,标题。
我正在使用下一个代码来保存我的数据:
data.to_csv('/Users/Computer/Desktop/Examples anaconda/data_new.csv', sep=',',mode='a')
结果是:
dot lake mock
1 42 11.914558
2 41 42.446977
3 40 89.188668
dot lake mock
1 42 226.266513
2 41 317.768887
dot lake mock
3 42 560.171830
4. 41. 555.005333
我想要的是:
dot lake mock mock mock
0 42 11.914558. 226.266513. 560.171830
1 41 42.446977. 317.768887. 555.005533
2 40 89.188668
更新: 我的 DataFrame 是使用这样的函数生成的:
首先我打开了一个csv文件:
df1=pd.read_csv('current_state.csv')
def my_function(df1, photos, coords=['X', 'Y']):
Hzs = t.copy()
shifts = np.floor(Hzs / t_step).astype(np.int)
ms = np.zeros(shifts.size)
delta_inv = np.arange(N+1)
dot = delta_inv[N:0:-1]
lake = np.arange(1,N+1)
for i, shift in enumerate(shifts):
diffs = df1[coords] - df1[coords].shift(-shift)
sqdist = np.square(diffs).sum(axis=1)
ms[i] = sqdist.sum()
mock = np.divide(ms, dot)
msds = pd.DataFrame({'dot':dot, 'lake':lake, 'mock':mock})
return msds
data = my_function(df1, photos, coords=['X', 'Y'])
print(data)
data.to_csv('/Users/Computer/Desktop/Examples anaconda/data_new.csv', sep=',',mode='a'
我花了几天时间寻找在包含多个计算列的 csv 文件中编写的方法,该文件恰好与下一个列相邻。甚至一些家伙的不愉快的评论!我终于找到了如何做到这一点。如果有人需要类似的东西:
首先我使用 to_csv
:
data.to_csv('/Users/Computer/Desktop/Examples/data_new.csv', sep=',',mode='a', index=False)
在文件已经用 headers 生成后,我删除了不需要的索引,我只调用了最后使用的函数:
b = data
a = pd.read_csv('data_new.csv')
c = pd.concat ([a,b],axis=1, ignore_index=True)
c.to_csv('/Users/Computer/Desktop/Examples/data_new.csv', sep=',', index=False)
结果我得到了所需的 CSV 文件,并且可以在您想要的时间调用该函数!