我有几个CSV文件格式:
Year,Day,Hour,Min,Sec.,P1'S1
2003, 1, 0, 0,12.22, 0.541
2003, 1, 1, 0,20.69, 0.708
2003, 1, 2, 0, 4.95, 0.520
2003, 1, 3, 0,13.42, 0.539
...
Run Code Online (Sandbox Code Playgroud)
(当天,是一年中的某一天)我正在尝试使用熊猫图书馆阅读它们(到目前为止似乎是一个很棒的文章).
有一个内置函数可以在pandas中读取CSV,甚至更好的是,该函数可以检查列的日期类型.并自动将其用作索引(这对我正在做的事情来说非常完美).
问题是,我无法使用这种格式的日期数据.
我试过了:
data = pd.read_csv("csvFile.csv", index_col=[0, 1], , index_col=[0, 1, 2, 3, 4] parse_dates=True)
Run Code Online (Sandbox Code Playgroud)
但它只能正确地获得年份:
In [36]: data.index
Out[36]:
MultiIndex
[(<Timestamp: 2003-09-04 00:00:00>, 1, 0, 0, 12.22)
(<Timestamp: 2003-09-04 00:00:00>, 1, 1, 0, 20.69)
(<Timestamp: 2003-09-04 00:00:00>, 1, 2, 0, 4.95) ...,
(<Timestamp: 2003-09-04 …Run Code Online (Sandbox Code Playgroud) 我已经看到了一些将Python中的格式化二进制文件读取到Pandas的方法,即,我正在使用这段代码,该代码使用NumPy从具有dtype给出的结构格式的文件中读取。
import numpy as np
import pandas as pd
input_file_name = 'test.hst'
input_file = open(input_file_name, 'rb')
header = input_file.read(96)
dt_header = np.dtype([('version', 'i4'),
('copyright', 'S64'),
('symbol', 'S12'),
('period', 'i4'),
('digits', 'i4'),
('timesign', 'i4'),
('last_sync', 'i4')])
header = np.fromstring(header, dt_header)
dt_records = np.dtype([('ctm', 'i4'),
('open', 'f8'),
('low', 'f8'),
('high', 'f8'),
('close', 'f8'),
('volume', 'f8')])
records = np.fromfile(input_file, dt_records)
input_file.close()
df_records = pd.DataFrame(records)
# Now, do some changes in the individual values of df_records
# and then write it back to a …Run Code Online (Sandbox Code Playgroud) 我有这个数据框:
> dat
x y yerr
1 -1 -1.132711 0.001744498
2 -2 -2.119657 0.003889120
3 -3 -3.147378 0.007521881
4 -4 -4.220129 0.012921450
5 -5 -4.586586 0.021335644
6 -6 -5.389198 0.032892630
7 -7 -6.002848 0.048230946
Run Code Online (Sandbox Code Playgroud)
我可以用标准误差平滑绘制它:
p <- ggplot(dat, aes(x=x, y=y)) + geom_point()
p <- p + geom_errorbar(data=dat, aes(x=x, ymin=y-yerr, ymax=y+yerr), width=0.09)
p + geom_smooth(method = "lm", formula = y ~ x)
Run Code Online (Sandbox Code Playgroud)

但我需要的是使用yerr来拟合我的线性模型.用ggplot2可以吗?
我有一个包含 2 个数据列和一个多索引的 Dataframe,每个月和一个月中的每一天都有一个多索引,例如:
temperatureMax temperatureMin
time time
1 1 14.167500 7.744167
2 13.735000 7.480833
3 14.228333 7.901667
4 13.891667 7.350833
5 13.735833 6.903333
6 13.670000 6.494167
7 13.642500 7.040000
8 13.005000 6.175000
9 13.034167 5.253333
10 13.260833 5.628333
11 13.783333 5.511667
12 13.823333 6.630000
13 13.265833 6.712500
14 13.112500 6.130000
15 12.355833 7.213333
16 13.032500 6.533333
17 13.175833 7.030000
18 13.184167 8.225000
19 13.896667 6.658333
20 13.711667 5.693333
21 13.442500 5.944167
22 13.245000 6.468333
23 13.765000 5.555833
24 14.260000 …Run Code Online (Sandbox Code Playgroud) 我在Python中有2个列表,我想为每个索引选择列表A或列表B中的元素.
我设法轻松地做到了,但这个解决方案性能不好,看起来并不优雅.
任何人都可以sugest不依赖于这些替代了随循环的,如果里面是什么?
我会在这里发布代码:
def scramble(list1, list2):
finalList = []
for i in range(32): # the list has 32 elements
if randint(1,2) == 1:
finalList.append(list1[i])
else:
finalList.append(list2[i])
return finalList
Run Code Online (Sandbox Code Playgroud) 我.vimrc在Mac OS下的OSX中有以下配置.
let mapleader = ','
nnoremap <leader>af :Autoformat<CR> " autoformat document
nnoremap <leader>ig :IndentGuidesToggle<CR> " indent guides toggle
nnoremap <leader>nt :NERDTreeToggle<CR> " nerd tree toggle
nnoremap <leader>tb :TagbarToggle<CR> " tagbar toggle
Run Code Online (Sandbox Code Playgroud)
命令工作正常,但是当我使用它们时,终端会发出声音提示错误,光标移动位置大约4行.在iTerm2和GVim中使用Vim时都会发生这种情况.
知道为什么会这样,以及如何解决它?
我正在尝试为Vim构建一个语言语法文件,而我却陷入了困境.
该语言//用于注释和/除法运算符.
我尝试使用以下正则表达式定义:
syn match pslComment "\v//.*$"
syn match pslOperator "\v\/"
Run Code Online (Sandbox Code Playgroud)
但我的comments(//)始终匹配为除法运算符(/).
这样做的正确方法是什么?
我试图让Ideavim插件在Intellij IDEA和PyCharm中正常工作,但文档相当差,我无法正确配置它.
对于初学者,文档告诉我在Preferences/Keymap下选择VIM键映射,但在安装Ideavim之前或之后没有VIM键映射.
此外,根据文档,一些插件被支持(尽管文档没有说明,只讨论vim-surreound),但即使把线放入~/.ideavimrc:
set vim-surround
Run Code Online (Sandbox Code Playgroud)
vim-surround命令根本不起作用.
此外,操作/命令列表在哪里可用于~/.ideavimrc映射某些键绑定.
例如,假设我想重新映射<leader> f s以保存我的文件.我在哪里可以找到可用的命令,以便我可以输入以下内容~/.ideavimrc:
let mapleader = " "
nmap <LEADER>fs :SaveFile<CR>
Run Code Online (Sandbox Code Playgroud) 我对C++数组有一个非常奇怪的问题.一切顺利,直到我将它传递给函数将其写入磁盘,之后,更改数组而不执行任何操作.
int saveMatrix(Long64_t*, unsigned int, const char*);
void resetArray(Long64_t* array, unsigned int size)
{
for (unsigned long int i = 0; i < size; i++)
array[i] = 0;
}
int saveMatrix(Long64_t* array, unsigned int size, const char* filename)
{
// Returns:
// 0 - Exit
// 1 - Error
ofstream out(filename, ios::out);
if (!out) {
cout << "Cannot open file.";
return 1;
}
for (unsigned long int i = 0; i < size; i++) {
out << array[i] << " …Run Code Online (Sandbox Code Playgroud) 有没有简单的方法来交换数组中2个元素的位置 - 或者更好的是,n个元素?
我想出了一些代码,但它看起来很丑陋,性能应该有点差:
chromo = [[1,2], [3,4], [5,6]]
gene1Pos = random.randrange(0, len(chromo)-1, 1)
gene2Pos = random.randrange(0, len(chromo)-1, 1)
tmpGene1 = chromo[gene1Pos]
tmpGene2 = chromo[gene2Pos]
chromo[gene1Pos] = tmpGene2
chromo[gene2Pos] = tmpGene1
Run Code Online (Sandbox Code Playgroud)
这应该有用,但是,这并不好.更好的方法是像random.shuffle这样的例程,但不是混合所有东西,只会混合n个元素.你有什么主意吗?
df = pl.DataFrame(
{
"era": ["01", "01", "02", "02", "03", "03"],
"pred1": [1, 2, 3, 4, 5,6],
"pred2": [2,4,5,6,7,8],
"pred3": [3,5,6,8,9,1],
"something_else": [5,4,3,67,5,4],
}
)
pred_cols = ["pred1", "pred2", "pred3"]
ERA_COL = "era"
Run Code Online (Sandbox Code Playgroud)
我正在尝试做一个相当于北极熊排名百分位的事情。Polars 的rank功能缺乏pctPandas 所具有的旗帜。
我在这里查看了另一个问题:how to replacement pandas df.rank(axis=1) with Polars
但问题的结果(并将其应用到我的代码中)有些不对劲。计算 Pandas 中的排名百分比,给我一个浮点数,Polars 提供的示例给我一个数组,而不是浮点数,因此示例中计算的内容有所不同。
举个例子,Pandas 代码是这样的:
df[list(pred_cols)] = df.groupby(ERA_COL, group_keys=False).apply(
lambda d: d[list(pred_cols)].rank(pct=True)
)
Run Code Online (Sandbox Code Playgroud)