我有一个像这样的项目列表:
A = ['1', 'd', 'p', 'bab', '']
Run Code Online (Sandbox Code Playgroud)
我的目标是将这样的列表转换为1行和5列的数据帧.如果我输入,pd.DataFrame(A)
我会获得5行和1列.我该怎么办才能得到我想要的结果?
我正在使用python,我已经定义了地图上多边形的纬度和经度(以度为单位).我的目标是检查一般P
坐标点是否x,y
落在这样的多边形内.因此,我希望有一个功能,允许我检查这种情况并返回True
或者False
如果该点在多边形内部或外部.
在这个例子中,点在外面,结果就是 False
问题:是否有允许达到目标的库/包?如果是,你推荐哪一个?你能给出一个如何使用它的小例子吗?
这是我到目前为止编写的代码:
import numpy as np
# Define vertices of polygon (lat/lon)
v0 = [7.5, -2.5]
v1 = [2, 3.5]
v2 = [-2, 4]
v3 = [-5.5, -4]
v4 = [0, -10]
lats_vect = np.array([v0[0],v1[0],v2[0],v3[0],v4[0]])
lons_vect = np.array([v0[1],v1[1],v2[1],v3[1],v4[1]])
# Point of interest P
x, y = -6, 5 # x = Lat, y = Lon
## START MODIFYING FROM HERE; DO NOT MODIFY POLYGON VERTICES AND DATA TYPE …
Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
# Create an example dataframe about a fictional army
raw_data = {'regiment': ['Nighthawks', 'Nighthawks', 'Nighthawks', 'Nighthawks'],
'company': ['1st', '1st', '2nd', '2nd'],
'deaths': ['kkk', 52, '25', 616],
'battles': [5, '42', 2, 2],
'size': ['l', 'll', 'l', 'm']}
df = pd.DataFrame(raw_data, columns = ['regiment', 'company', 'deaths', 'battles', 'size'])
Run Code Online (Sandbox Code Playgroud)
我的目标是将数据帧内的每个字符串转换为大写,以便它看起来像这样:
注意:所有数据类型都是对象,不得更改; 输出必须包含所有对象.我想避免逐个转换每一列......我想在整个数据框中做到这一点.
到目前为止我尝试过的是这样做但没有成功
df.str.upper()
Run Code Online (Sandbox Code Playgroud) 我有一个包含一些数据的txt文件,其中一列是这样的:
['BONGO', 'TOZZO', 'FALLO', 'PINCO']
Run Code Online (Sandbox Code Playgroud)
为了加载文件我使用pandas函数to_csv
.
一旦加载了数据帧,它看起来好像内容没问题,但后来我意识到数据框中的项目不是项目列表,而是一个字符串,其元素是列表中的字符!
df['column']
返回一个这样的字符串
"['BONGO', 'TOZZO', 'FALLO', 'PINCO']"
Run Code Online (Sandbox Code Playgroud)
而不是像这样的列表:
['BONGO', 'TOZZO', 'FALLO', 'PINCO']
Run Code Online (Sandbox Code Playgroud)
因此,如果我输入df['column'][0]
我'['
而不是BONGO
我该怎么做才能将字符串转换回原始列表格式?to_csv
我应该使用该功能的输入吗?
我正在写一个简单的代码,关于添加2个矩阵A和B的元素; 代码非常简单,它的灵感来自于CUDA C编程指南第2章中给出的示例.
#include <stdio.h>
#include <stdlib.h>
#define N 2
__global__ void MatAdd(int A[][N], int B[][N], int C[][N]){
int i = threadIdx.x;
int j = threadIdx.y;
C[i][j] = A[i][j] + B[i][j];
}
int main(){
int A[N][N] = {{1,2},{3,4}};
int B[N][N] = {{5,6},{7,8}};
int C[N][N] = {{0,0},{0,0}};
int (*pA)[N], (*pB)[N], (*pC)[N];
cudaMalloc((void**)&pA, (N*N)*sizeof(int));
cudaMalloc((void**)&pB, (N*N)*sizeof(int));
cudaMalloc((void**)&pC, (N*N)*sizeof(int));
cudaMemcpy(pA, A, (N*N)*sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(pB, B, (N*N)*sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(pC, C, (N*N)*sizeof(int), cudaMemcpyHostToDevice);
int numBlocks = 1;
dim3 threadsPerBlock(N,N);
MatAdd<<<numBlocks,threadsPerBlock>>>(A,B,C);
cudaMemcpy(C, pC, (N*N)*sizeof(int), …
Run Code Online (Sandbox Code Playgroud) 我有这样的数据帧:
import pandas as pd
dic = {'A':[100,200,250,300],
'B':['ci','ci','po','pa'],
'C':['s','t','p','w']}
df = pd.DataFrame(dic)
Run Code Online (Sandbox Code Playgroud)
我的目标是将2个数据帧中的行分开:
B
(unque rows).结果应如下所示:
df1 = A B C df2 = A B C
0 250 po p 0 100 ci s
1 300 pa w 1 250 ci t
Run Code Online (Sandbox Code Playgroud)
注意:
我有2个函数fun1
,fun2
分别作为输入字符串和数字.这两个输入都是相同的变量a
.这是代码:
a = ['A','X','R','N','L']
def fun1(string,vect):
out = []
for letter in vect:
out. append(string+letter)
return out
def fun2(number,vect):
out = []
for letter in vect:
out.append(str(number)+letter)
return out
x = fun1('Hello ',a)
y = fun2(2,a)
Run Code Online (Sandbox Code Playgroud)
这些函数执行一些无意义的操作.我的目标是以这样的方式重写代码,即变量a在函数之间共享,这样它们就不再将它作为输入.
删除变量a
作为输入的一种方法是在函数本身中定义它,但不幸的是,这不是很优雅.你能告诉我一个可能达到目标的方法吗?
函数应该以相同的方式操作,但输入参数应该只是字符串和数字(fun1(string)
,fun2(number)
).
我有一个看起来像这样的数据框:
dic = {'A':['PINCO','PALLO','CAPPO','ALLOP'],
'B':['KILO','KULO','FIGA','GAGO'],
'C':[['CAL','GOL','TOA','PIA','STO'],
['LOL','DAL','ERS','BUS','TIS'],
['PIS','IPS','ZSP','YAS','TUS'],
[]]}
df1 = pd.DataFrame(dic)
Run Code Online (Sandbox Code Playgroud)
我的目标是为每一行插入元素 A
作为 column 中包含的列表的第一项C
。同时,我想将 的元素设置B
为包含在C
.
我能够通过使用以下代码行来实现我的目标:
for index, row in df1.iterrows():
try:
row['C'].insert(0,row['A'])
row['C'].append(row['B'])
except:
pass
Run Code Online (Sandbox Code Playgroud)
有没有更优雅、更有效的方法来实现我的目标,也许使用一些 Pandas 函数?我想避免 for 循环。
我有一个包含一定数量行的txt文件.每行可能包含不同数量的项目.
以下是一个示例input.txt
:
1,0,50,20,2,96,152,65,32,0
1,0,20,50,88,45,151
1,1,90,15,86,11,158,365,45
2,0,50,20,12,36,157,25
2,0,20,50,21,63,156,76,32,77
3,1,50,20,78,48,152,75,52,22,96
Run Code Online (Sandbox Code Playgroud)
我的目标是将这些数据存储在具有以下结构的数据框中:
因此输出应该是这样的:
Out[8]:
A B C D E
0 1 0 50 20 [2, 96, 152, 65, 32, 0]
1 1 0 20 50 [88, 45, 151]
2 1 1 90 15 [86, 11, 158, 365, 45]
3 2 0 50 20 [12, 36, 157, 25]
4 2 0 20 50 [21, 63, 156, 76, 32, 77]
5 3 1 50 20 [78, 48, 152, 75, 52, …
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的数据框,如下所示:
In [8]: df
Out[8]:
A B C
0 2 a a
1 3 s 3
2 4 c !
3 1 f 1
Run Code Online (Sandbox Code Playgroud)
我的目标是以这种方式提取第一行:
A B C
0 2 a a
Run Code Online (Sandbox Code Playgroud)
如您所见,数据框形状(1x3)被保留,第一行仍具有3列。
但是,当我键入以下命令时df.loc[0]
,输出结果是这样的:
df.loc[0]
Out[9]:
A 2
B a
C a
Name: 0, dtype: object
Run Code Online (Sandbox Code Playgroud)
如您所见,该行已变成具有3行的列!(3x1而非3x1)。这怎么可能?如何简单地提取行并保留目标中描述的形状?您能提供一种聪明而优雅的方法吗?
我尝试使用transpose命令,.T
但是没有成功...我知道我可以创建另一个数据框,其中的列是由原始数据框提取的,但是这种方式非常繁琐且不太优雅,我会说(pd.DataFrame({'A':[2], 'B':'a', 'C':'a'})
)。
如果需要,这是数据框:
import pandas as pd
df = pd.DataFrame({'A':[2,3,4,1], 'B':['a','s','c','f'], 'C':['a', 3, '!', 1]})
Run Code Online (Sandbox Code Playgroud)