我如何从 pandas 数据框创建一个文本文件,该数据框以另一种形式混合两列?
How can i create a text file from a pandas dataframe mixing two columns in an alternate form?
假设我在同一个巨大的数据帧(超过 1G 的数据)上有两列 pandas 类似这样(简化):
df
A B
C D
我想创建一个包含所有数据的文本文件,格式如下:
A
B
C
D
你会怎么做?
有几种方法。您可以使用 .stack()
或 .melt()
或 .unstack()
或 pd.concat()
:
输入:
0 1
A B
C D
#1:
pd.DataFrame(df.stack().reset_index(drop=True))
#2:
pd.DataFrame(df.melt().iloc[:,-1])
#3:
pd.DataFrame(df.unstack().reset_index(drop=True)) #keeps order as A, C, B, D
#4:
pd.DataFrame(pd.concat([df['0'],df['1']]).reset_index(drop=True)) #keeps order as A, C, B, D
输出:
0
A
B
C
D
您可以使用 np.savetxt
和
将数据框保存到文本文件中
要在新行中保存每一列,请使用 df.to_numpy().flatten()
将数据帧转换为 numpy 数组,然后将其展平。
np.savetxt("new.txt", df.to_numpy().flatten(), fmt='%s')
感谢大家的意见,我自己做了解决方案,因为这个问题非常具体,所以我不得不根据自己的需要进行调整,但你们的回答为我指明了正确的方向!
import pandas as pd
import os
df = pd.DataFrame(pd.read_csv('0.csv',header=None).loc[:, [3, 4]].stack().reset_index(drop=True))
f=open("0.txt","w+") # file name and mode
for index,row in df.iterrows():
f.writelines(row[0])
f.close()
假设我在同一个巨大的数据帧(超过 1G 的数据)上有两列 pandas 类似这样(简化):
df
A B
C D
我想创建一个包含所有数据的文本文件,格式如下:
A
B
C
D
你会怎么做?
有几种方法。您可以使用 .stack()
或 .melt()
或 .unstack()
或 pd.concat()
:
输入:
0 1
A B
C D
#1:
pd.DataFrame(df.stack().reset_index(drop=True))
#2:
pd.DataFrame(df.melt().iloc[:,-1])
#3:
pd.DataFrame(df.unstack().reset_index(drop=True)) #keeps order as A, C, B, D
#4:
pd.DataFrame(pd.concat([df['0'],df['1']]).reset_index(drop=True)) #keeps order as A, C, B, D
输出:
0
A
B
C
D
您可以使用 np.savetxt
和
要在新行中保存每一列,请使用 df.to_numpy().flatten()
将数据帧转换为 numpy 数组,然后将其展平。
np.savetxt("new.txt", df.to_numpy().flatten(), fmt='%s')
感谢大家的意见,我自己做了解决方案,因为这个问题非常具体,所以我不得不根据自己的需要进行调整,但你们的回答为我指明了正确的方向!
import pandas as pd
import os
df = pd.DataFrame(pd.read_csv('0.csv',header=None).loc[:, [3, 4]].stack().reset_index(drop=True))
f=open("0.txt","w+") # file name and mode
for index,row in df.iterrows():
f.writelines(row[0])
f.close()