如何从df中选择列a和b,并将它们保存到新的数据帧df1中?
index a b c
1 2 3 4
2 3 4 5
尝试失败:
df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']
如何从df中选择列a和b,并将它们保存到新的数据帧df1中?
index a b c
1 2 3 4
2 3 4 5
尝试失败:
df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']
当前回答
要选择多个列,请提取并查看它们:df是先前命名的数据帧。然后创建一个新的数据帧df1,并选择要提取和查看的列a到D。
df1 = pd.DataFrame(data_frame, columns=['Column A', 'Column B', 'Column C', 'Column D'])
df1
将显示所有必需的列!
其他回答
In [39]: df
Out[39]:
index a b c
0 1 2 3 4
1 2 3 4 5
In [40]: df1 = df[['b', 'c']]
In [41]: df1
Out[41]:
b c
0 3 4
1 4 5
您可以提供要删除的列的列表,并使用Pandas DataFrame上的drop()函数仅返回所需的列。
只是说说而已
colsToDrop = ['a']
df.drop(colsToDrop, axis=1)
将返回仅包含列b和c的DataFrame。
此处记录了drop方法。
前面的答案中讨论的不同方法基于这样的假设:用户知道要删除或子集的列索引,或者用户希望使用一系列列(例如“C”和“E”之间)来子集数据帧。
pandas.DataFrame.drop()当然是一个基于用户定义的列列表对数据进行子集的选项(尽管您必须谨慎地始终使用数据帧的副本,并且不应将就地参数设置为True!!)
另一个选项是使用pandas.columns.difference(),它对列名进行设置差异,并返回包含所需列的数组的索引类型。以下是解决方案:
df = pd.DataFrame([[2,3,4], [3,4,5]], columns=['a','b','c'], index=[1,2])
columns_for_differencing = ['a']
df1 = df.copy()[df.columns.difference(columns_for_differencing)]
print(df1)
输出将是:
b c
1 3 4
2 4 5
你可以使用熊猫。
我创建DataFrame:
import pandas as pd
df = pd.DataFrame([[1, 2,5], [5,4, 5], [7,7, 8], [7,6,9]],
index=['Jane', 'Peter','Alex','Ann'],
columns=['Test_1', 'Test_2', 'Test_3'])
数据帧:
Test_1 Test_2 Test_3
Jane 1 2 5
Peter 5 4 5
Alex 7 7 8
Ann 7 6 9
要按名称选择一个或多个列,请执行以下操作:
df[['Test_1', 'Test_3']]
Test_1 Test_3
Jane 1 5
Peter 5 5
Alex 7 8
Ann 7 9
您还可以使用:
df.Test_2
然后得到Test_2列:
Jane 2
Peter 4
Alex 7
Ann 6
您还可以使用.loc()从这些行中选择列和行。这称为“切片”。请注意,我从列Test_1到Test_3:
df.loc[:, 'Test_1':'Test_3']
“切片”是:
Test_1 Test_2 Test_3
Jane 1 2 5
Peter 5 4 5
Alex 7 7 8
Ann 7 6 9
如果你只想让Peter和Ann在Test_1和Test_3列中:
df.loc[['Peter', 'Ann'], ['Test_1', 'Test_3']]
你得到:
Test_1 Test_3
Peter 5 5
Ann 7 9
对于Pandas,
具有列名称
dataframe[['column1','column2']]
要通过iloc和带有索引编号的特定列进行选择,请执行以下操作:
dataframe.iloc[:,[1,2]]
带有loc的列名可以使用如下
dataframe.loc[:,['column1','column2']]