小编Fed*_*ile的帖子

如何使用Pandas将列表转换为行数据帧

我有一个像这样的项目列表:

A = ['1', 'd', 'p', 'bab', '']
Run Code Online (Sandbox Code Playgroud)

我的目标是将这样的列表转换为1行和5列的数据帧.如果我输入,pd.DataFrame(A)我会获得5行和1列.我该怎么办才能得到我想要的结果?

python row list dataframe pandas

23
推荐指数
2
解决办法
4万
查看次数

检查地理点是否在Python的多边形内部或外部

我正在使用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)

python polygon coordinate-systems point-in-polygon shapely

20
推荐指数
4
解决办法
2万
查看次数

使用Pandas将整个数据帧从小写转换为大写

我有一个如下所示的数据框:

# 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)

python type-conversion lowercase uppercase pandas

13
推荐指数
5
解决办法
4万
查看次数

如何使用Pandas将字符串转换回列表

我有一个包含一些数据的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我应该使用该功能的输入吗?

python string list char pandas

8
推荐指数
1
解决办法
3582
查看次数

如何使用CUDA C进行矩阵加法

我正在写一个简单的代码,关于添加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)

c cuda nvidia matrix

5
推荐指数
1
解决办法
9888
查看次数

如何用pandas选择重复的行?

我有这样的数据帧:

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个数据帧中的行分开:

  • df1 =包含不沿列重复值的所有行B(unque rows).
  • df2 =仅包含重复自己的行.

结果应如下所示:

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)

注意:

  • 数据帧通常非常大,并且有许多值在B列中重复,因此答案应尽可能通用
    • 如果没有重复项,df2应为空!所有结果都应该在df1中

python subtraction divide dataframe pandas

5
推荐指数
1
解决办法
8957
查看次数

如何在python中的函数之间共享变量?

我有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)).

python variables input function

5
推荐指数
3
解决办法
1万
查看次数

如何将项目附加到 Pandas 中不同列的列表

我有一个看起来像这样的数据框:

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 循环。

python list append dataframe pandas

5
推荐指数
1
解决办法
4338
查看次数

使用Pandas从具有不同行长度的文件导入数据

我有一个包含一定数量行的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)

我的目标是将这些数据存储在具有以下结构的数据框中:

  • 5列
  • 从1到4的列包含每行包含的前4个值
  • 5列包含一个列表,用于存储每行剩余的内容

因此输出应该是这样的:

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)

python list python-import dataframe pandas

5
推荐指数
1
解决办法
3200
查看次数

熊猫自动将行转换为列

我有一个非常简单的数据框,如下所示:

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)

python row shape dataframe pandas

5
推荐指数
1
解决办法
906
查看次数