如何从数据帧列表创建csv文件?

2024-10-05 22:51:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从数据帧列表创建一个csv文件。“我的数据”保留所有相同的列名,除了每次交换的一列。以下是基于列表索引的列表:

index 0:

height weight age isFunny
  4      2    21     0

index 1:

height weight age isCool
  10     30   81    34

index 2:

height weight age isDumb
  4      2    34     10

index 3:

height weight age isTalker
  4      12   25     3

我认为保存这些数据的最好方法是在一个熊猫数据帧列表中,但是如果有更好的替代方法,那么请给出任何建议。你知道吗


Tags: 文件csv数据方法列表ageindex建议
2条回答

您可以使用reduce创建单个数据帧并将其保存到csv。你知道吗

df_1 = pd.DataFrame([[4,2,21,0]],columns='height weight age isFunny'.split())
df_2 = pd.DataFrame([[10,30,81,35]],columns='height weight age isCool'.split())
df_3 = pd.DataFrame([[4,2,34,10]],columns='height weight age isDumb'.split())
df_4 = pd.DataFrame([[4,12,25,3]],columns='height weight age isTalker'.split())
l = [df_1, df_2, df_3, df_4]

from functools import reduce
>>> reduce(lambda x, y: x.append(y), l)

   age  height  isCool  isDumb  isFunny  isTalker  weight
0   21       4     NaN     NaN      0.0       NaN       2
1   81      10    35.0     NaN      NaN       NaN      30
2   34       4     NaN    10.0      NaN       NaN       2
3   25       4     NaN     NaN      NaN       3.0      12

假设myDF是您的数据帧列表,您可以像这样序列化它:

import pickle
pickle.dump(myDF, "my_file.pickle")

然后您可以在任何时候加载它:

import pickle
myDF = pickle.load("my_file.pickle")

从技术上讲,您可以使用CSV文件来完成您想做的事情,但是使用带有多个头的CSV是不明智的。不过,你可以这么做:

my_file_name = "my_file.csv"
[df.to_csv(my_file_name, mode="a+", index=False) for df in myDF]

别这样。这太蠢了。你知道吗

根据您的附加上下文,我建议您这样做(这在概念上与另一个答案类似):

melted_df = pd.concat([df.melt(id_vars = ['height', 'weight', 'age']) for df in myDF])
melted_df.to_csv("my_file.csv")

您可能希望再次将多重索引展开为列。你知道吗

相关问题 更多 >