第一个函数必须返回到data.csv文件中的第一列col1
,第二个函数必须返回第二列col2
。我编写了一个代码,但无法保存。
def func1(testvalue):
json_d = {"task_id": "user_uid","data": {"document1":testvalue}}
response = requests.post("https://example.net/document",headers=headers,json=json_d)
my_data1 = response.text
file = open("data.csv","a+")
file.write(my_data1)
file.close()
my_data = json.loads(my_data1)
result = {'bool':my_data['data']}
return result
def func2(testvalue):
test = {"data": {"doc1":testvalue}}
response = requests.post("https://example.net/v3/docs",headers=headers,json=test)
my_data2 = response.text
file = open("data.csv","a+")
file.write(my_data2)
file.close()
my_data = json.loads(my_data2)
result = {'bool':my_data['data']}
return result
df['res'] = df['test'].apply(func1)
>>将file.write(my_data1)
保存到数据的第一列,df['test'].apply(func1)
将file.write(my_data2)
保存到data.csv的第二列
答案 0 :(得分:1)
如果我正确理解您的要求,则希望将每一列另存为单独的.csv
文件。您可以使用pandas.DataFrame.to_csv
轻松地做到这一点。
现在假设您想一次将一列保存到一个.CSV
文件中。在这种情况下,您可以简单地合并存储在您创建的每个文件中的列数据,如下所示,然后将其与所有信息一起保存为单独的csv
文件。如果需要,还可以在合并单个文件后将其删除。
这里,我们创建一个包含列
x
和y
的虚拟数据帧,然后使用.csv
将它们分别写入该列的pandas.DataFrame.to_csv
文件,如下所示,最后检查在output_path
创建的文件列表。
# Imports
import numpy as np
import pandas as pd
import os
# Make dummy dataframe
df = pd.DataFrame({'x': np.arange(10), 'y': np.arange(10)**2})
# Define your output_path
output_path = os.getcwd() + '/output'
if not os.path.exists(output_path):
os.makedirs(output_path)
# Write individual CSV files for each column
for col_name in df.columns:
df[col_name].to_csv(path_or_buf=os.path.join(output_path, col_name + '.csv'), index=False)
# Check/Enlist contents in the output-path
print(sorted(os.listdir(output_path)))
输出:
['x.csv', 'y.csv']
阅读每一列并一起写入一个CSV文件
files = sorted(os.listdir(output_path))
df2 = pd.DataFrame()
for i, filename in enumerate(files):
if filename not in ['out.csv']:
col_name = filename.replace('.csv', '')
print('filename: {} | col_name: {}'.format(filename, col_name))
col_df = pd.read_csv(os.path.join(output_path, filename))
if i==0:
df2.reindex(index = col_df.index)
df2[col_name] = col_df['0']
# Write all columns to a single CSV
df2.to_csv(os.path.join(output_path, 'out.csv'))