GVKun编程网logo

将特定的选定列提取到新DataFrame中作为副本(dataframe提取指定列)

20

在本文中,我们将带你了解将特定的选定列提取到新DataFrame中作为副本在这篇文章中,我们将为您详细介绍将特定的选定列提取到新DataFrame中作为副本的方方面面,并解答dataframe提取指定

在本文中,我们将带你了解将特定的选定列提取到新DataFrame中作为副本在这篇文章中,我们将为您详细介绍将特定的选定列提取到新DataFrame中作为副本的方方面面,并解答dataframe提取指定列常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的DataFrame中去除指定列为空的行方法、Numpy数组作为Pandas DataFrame中的元素、Pandas - 使用一个 Dataframe 列的子字符串比较两个 Dataframe、Pandas DataFrame使用另一个DataFrame列过滤行

本文目录一览:

将特定的选定列提取到新DataFrame中作为副本(dataframe提取指定列)

将特定的选定列提取到新DataFrame中作为副本(dataframe提取指定列)

我有一个带有4列的pandas DataFrame,我想创建一个 只有 三个列的 DataFrame
。这个问题类似于:从数据框中提取特定的列,但对于不是R的熊猫来说。以下代码不起作用,会引发错误,并且肯定不是熊猫的方式。

import pandas as pdold = pd.DataFrame({''A'' : [4,5], ''B'' : [10,20], ''C'' : [100,50], ''D'' : [-30,-50]})new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can''t be an iterator

熊猫人做这件事的方法是什么?

答案1

小编典典

有一种方法可以做到,它实际上看起来类似于R

new = old[[''A'', ''C'', ''D'']].copy()

在这里,您只是从原始数据框中选择所需的列,并为这些列创建变量。如果您想完全修改新的数据框,则可能要.copy()避免使用SettingWithCopyWarning

一种替代方法是使用filter默认情况下将创建副本的方法:

new = old.filter([''A'',''B'',''D''], axis=1)

最后,根据原始数据帧中的列数,使用a表示它可能更简洁drop(默认情况下也会创建一个副本):

new = old.drop(''B'', axis=1)

DataFrame中去除指定列为空的行方法

DataFrame中去除指定列为空的行方法

一次,笔者在处理数据时想去除DataFrame中指定列的值为空的这一行,采用了如下做法,但是怎么都没有成功:

# encoding: utf-8
import pandas as pd
import math
import numpy as np
data = pd.read_csv('mydata.csv')
print len(data)
for i in range(len(data)):
  if (data['导演'][i] == ‘'):
    data = data.drop(i)
data.to_csv('data.csv')

然后发现,要去除DataFrame中指定列的值为空的这一行,可以在循环中使用numpy或者math中的isnan()判断方法:

# encoding: utf-8
import pandas as pd
import math
import numpy as np
data = pd.read_csv('mydata.csv')
print len(data)
for i in range(len(data)):
  if np.isnan(data['导演'][i]):
    data = data.drop(i)
data.to_csv('data.csv')

以上这篇DataFrame中去除指定列为空的行方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:

  • 对pandas的dataframe绘图并保存的实现方法
  • 对Python中DataFrame按照行遍历的方法
  • python之DataFrame实现excel合并单元格
  • python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
  • 使用DataFrame删除行和列的实例讲解

Numpy数组作为Pandas DataFrame中的元素

Numpy数组作为Pandas DataFrame中的元素

是的,可以。尝试将迭代对象放入单个单元格时,请使用.at[].iat[]来避免广播行为。这也适用于listset

不好的事情:以一种不涉及遍历行的优化方式进行此类分配可能非常具有挑战性。也就是说,这对于合理大小的阵列仍然可行。而且,如果您真的必须存储数百万个这样的阵列,则可能需要进行根本的重新设计。例如。重构代码,改用MongoDB或其他存储工具,等等。

import pandas as pd
import numpy as np

# preallocate the output dataframe
df = pd.DataFrame(
    data=np.zeros((2,4),dtype=object),columns=["Driver","Make","Model","Coordinates"]
)

# element-wise assignment
df.at[0,"Coordinates"] = np.array([[1,1],[1,2,3],[2,2]])
df.at[1,"Coordinates"] = np.array([[0,[0,0]])
# other elements were omitted

结果

print(df)
  Driver Make Model                        Coordinates
0      0    0     0  [[1,2]]
1      0    0     0             [[0,0]]

print(df.at[0,"Coordinates"])
[[1 0 1]
 [1 2 3]
 [2 0 2]]

print(type(df.at[0,"Coordinates"]))
<class 'numpy.ndarray'>

Pandas - 使用一个 Dataframe 列的子字符串比较两个 Dataframe

Pandas - 使用一个 Dataframe 列的子字符串比较两个 Dataframe

我能够使用下面的方法获得所需的输出

df1.merge(df2,left_on = df2.prod_ref.str.extract(''(\d+)'',expand = False),right_on = df1.prod_id.str.extract(''(\d+)'',how = ''left'')

Pandas DataFrame使用另一个DataFrame列过滤行

Pandas DataFrame使用另一个DataFrame列过滤行

我会做merge

out = df1.merge(df2[['col1','col2']],on = 'col1',suffixes = ('','1')).query('col3>=col21').drop('col21',1)

out
Out[15]: 
  col1  col2  col3  col4
1    A     2  0.80   200
2    A     2  0.90   300
3    A     3  0.95   400
4    A     3  0.85   500
5    B     2  0.65   600
6    B     2  0.75   700
9    B     3  0.75  1000

reindex

out = df1[df1['col3'] >= df2.set_index('col1')['col2'].reindex(df1['col1']).values]
Out[19]: 
  col1  col2  col3  col4
1    A     2  0.80   200
2    A     2  0.90   300
3    A     3  0.95   400
4    A     3  0.85   500
5    B     2  0.65   600
6    B     2  0.75   700
9    B     3  0.75  1000

您还可以使用map

 df1.loc[df1.col3 >= df1.col1.map(df2.set_index("col1").col2)]
,

我的方法类似于@Ben_Yo的合并答案,但是代码更多,但也许更直接。

您只需:

  1. 合并该列并创建新的数据框 ZStack{ Rectangle() .frame(width: geometry.size.width,height: geometry.size.height/3.25) .shadow(radius: 5) .foregroundColor(Color.white) //Words ontop of the Rectangle VStack { HStack { Spacer() Text("Hello World") }.padding(.trailing,40) Spacer() //<-- PROBLEM HERE }//.offset(y: -40) }
  2. 根据条件(在本例中为s
  3. ),将数据名人s更改为返回TrueFalse的布尔系列。
  4. 最后,将s['col3'] >= s['col2']传递给s,结果将排除布尔系列df1中返回False的行:

s

今天关于将特定的选定列提取到新DataFrame中作为副本dataframe提取指定列的介绍到此结束,谢谢您的阅读,有关DataFrame中去除指定列为空的行方法、Numpy数组作为Pandas DataFrame中的元素、Pandas - 使用一个 Dataframe 列的子字符串比较两个 Dataframe、Pandas DataFrame使用另一个DataFrame列过滤行等更多相关知识的信息可以在本站进行查询。

本文标签: