我有一个dataframe超过200列.问题在于订单生成了
['Q1.3','Q6.1','Q1.2','Q1.1',......]
Run Code Online (Sandbox Code Playgroud)
我需要按如下方式重新排序列:
['Q1.1','Q1.2','Q1.3',.....'Q6.1',......]
Run Code Online (Sandbox Code Playgroud)
我有办法在Python中做到这一点吗?
我想知道如何将新的DataFrame数据添加到现有csv文件的末尾?to_csv没有提到这样的功能.先感谢您.
我正在编写一个脚本来将带有标头的大型.xlsx文件缩减为csv,然后编写一个新的csv文件,其中只包含基于标题名称的必需列.
import pandas
import csv
df = pandas.read_csv('C:\\Python27\\Work\\spoofing.csv')
time = df["InviteTime (Oracle)"]
orignum = df["Orig Number"]
origip = df["Orig IP Address"]
destnum = df["Dest Number"]
df.to_csv('output.csv', header=[time,orignum,origip,destnum])
Run Code Online (Sandbox Code Playgroud)
我得到的错误是最后一段代码,它说
ValueError: Writing 102 cols but got 4 aliases
Run Code Online (Sandbox Code Playgroud)
我确定我忽略了一些愚蠢的东西,但我已经阅读了熊猫网站上的to_csv文档,我仍然不知所措.我知道我正在使用to_csv参数不正确,但我似乎无法理解我的文档.
任何帮助表示赞赏,谢谢!
我知道通过将compression='gzip'参数传递给pd.read_csv()我可以将DataFrame保存到压缩的CSV文件中.
my_df.to_csv('my_file_name.csv', compression='gzip')
Run Code Online (Sandbox Code Playgroud)
我也知道,如果我想将 DataFrame 附加到我可以使用的现有CSV文件的末尾mode='a',就像这样
my_df.to_csv('my_file_name.csv', mode='a', index=False)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想将DataFrame附加到压缩CSV文件的末尾怎么办?这甚至可能吗?我试着这样做
my_df.to_csv('my_file_name.csv', mode='a', index=False, compression='gzip')
Run Code Online (Sandbox Code Playgroud)
但是生成的CSV没有被压缩,尽管条件很好.
这个问题是由我处理带有Pandas的大型CSV文件引起的.我需要生成压缩的CSV输出,并将块文件中的CSV文件处理成DataFrame,这样我就不会遇到MemoryError.因此,对我来说,最看似合乎逻辑的事情是将每个输出DataFrame块一起附加到一个压缩的zip文件中.
我使用的是Python 3.4和Pandas 0.16.1.
我试图写一个pandas dataframe以parquet文件格式(在最近的大熊猫版本0.21.0介绍)append模式。但是,该文件不是附加到现有文件,而是被新数据覆盖。我错过了什么?
写语法是
df.to_parquet(path, mode='append')
Run Code Online (Sandbox Code Playgroud)
读取语法是
pd.read_parquet(path)
Run Code Online (Sandbox Code Playgroud) 我正在尝试将pandas DataFrame(单列)附加到现有的CSV,就像这篇文章一样,但它不起作用!相反,我的列被添加到csv的底部,并反复重复(csv >>行的大小为列).这是我的代码:
with open(outputPath, "a") as resultsFile:
print len(scores)
scores.to_csv(resultsFile, header=False)
print resultsFile
Run Code Online (Sandbox Code Playgroud)
终端输出:4032
<open file '/Users/alavin/nta/NAB/results/numenta/artificialWithAnomaly/numenta_art_load_balancer_spikes.csv', mode 'a' at 0x1088686f0>
先感谢您!
附加到 csv 时,我的第一行从现有的最后一行而不是新行开始。
我一直在搜索 SO,但我只是找到了在追加模式下打开 csv 或在写入 csv 时使用追加模式的基本用法。我无法理解这里接受的答案(to_csv 追加模式不追加到下一个新行),因为它似乎要求在用f.write("/n"). 这个答案(How to add pandas data to an existing csv file?)是最相关的,但我希望在一个函数中写入多个数据框,所以我不想继续打开它们。我的计划是使用如下函数:
import os
def mysave(df,dfpath):
# if file does not exist write header
if not os.path.isfile(dfpath):
df.to_csv(dfpath, index = False)
else: # else it exists so append without writing the header
df.to_csv(dfpath, mode = 'a', index = False, header = False)
mysave(mydf, 'foo.csv')
Run Code Online (Sandbox Code Playgroud)
我创建了一个非常简单的示例,其中 foo.csv 的结构如下:
a b c d
5 1 ah doo
6 …Run Code Online (Sandbox Code Playgroud) 我有一个数据框
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
Run Code Online (Sandbox Code Playgroud)
我想写入dfcsv 文件但不使用列['a', 'b']。第一行是我的自定义字符串,其余的是df.values. 例如:
numrows numcols note
1 2
3 4
Run Code Online (Sandbox Code Playgroud)
我可以用熊猫来做到这一点,还是我必须手动遍历内容并写入文件?
说我有数据框,c:
a=np.random.random((6,2))
c=pd.DataFrame(a)
c.columns=['A','B']
Run Code Online (Sandbox Code Playgroud)
打印第0行的值:
print c.loc[(0),:]
Run Code Online (Sandbox Code Playgroud)
结果是:
A 0.220170
B 0.261467
Name: 0, dtype: float64
Run Code Online (Sandbox Code Playgroud)
我想取消显示该Name: 0, dtype: float64行,以便得到:
A 0.220170
B 0.261467
Run Code Online (Sandbox Code Playgroud)
有人知道吗?
(nb我将此附加到文本文件中)
我有一个大型的sql文件(20 GB),我想将其转换为csv.我计划将文件加载到Stata进行分析.我有足够的内存来加载整个文件(我的电脑在RAM中有32GB)
问题是:到目前为止我在网上找到的解决方案(sqlite3)似乎需要比我当前系统更多的RAM:
这是代码
import sqlite3
import pandas as pd
con=sqlite3.connect('mydata.sql')
query='select * from mydata'
data=pd.read_sql(query,con)
data.to_csv('export.csv')
con.close()
Run Code Online (Sandbox Code Playgroud)
sql文件包含大约15个变量,可以是时间戳,字符串或数值.没什么好看的.
我认为一种可能的解决方案是读取sql并一次写一行csv文件.但是,我不知道如何做到这一点(在R或Python中)
任何帮助真的很感激!
我有一个2D矩阵,包含13行和13列(除了第一列以外的标题)correl,用Python 命名.这个correl矩阵是从a生成的DataFrame,我希望correlation用多个矩阵填充矩阵correl.例如:
correlation=[]
correl=df.corr()
correlation=correlation.append(correl) #correlation is not a DataFrame
Run Code Online (Sandbox Code Playgroud)
我使用correlation=[]它的原因是因为我希望填充correlation多个相关表.这就是我使用的原因,append因为这是一个循环.
现在我想在csv文件中导出这个相关矩阵.我做:
with open("C:\destinationfolder\file.csv", "wb") as f:
writer = csv.writer(f)
writer.writerows(correlation)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
raise KeyError('no item named %s' % com.pprint_thing(item))
KeyError: u'no item named 0'
为什么?我的猜测是我没有第一列的标题...是否有更简单的方法将我的相关表导出到csv?
当我将数据框写入 csv 时,如果我使用“with open”,我会在 csv 文件中的每一行之后得到一个空行:
df = pd.DataFrame(data=np.random.randint(0, 100, (4, 5)), columns=list('ABCDE'))
with open('test.csv', 'a') as f:
df.to_csv(f, header=False)
Run Code Online (Sandbox Code Playgroud)
如果我只是这样做:
df.to_csv('test.csv', header=False)
Run Code Online (Sandbox Code Playgroud)
没有空行!我究竟做错了什么?