2017-07-14 19 views
0

假设我有25列的数据帧(比如说)如下:如何从特定的数据框中形成数据框?

A   B   C  ...... I    J ......... Y 

I-1  yes  3    1-2-2017  100   james 

I-2  no  4    NaN   100   ashok 

I-3  NaN  9    2-10-2017  5    mary 

I-4  yes  NaN    2-10-2017  0    sania 

我想从上面的数据帧,使得

a)所述第一数据帧包括A柱,以获得3个dataframes ģ

b)所述第二数据帧由列A和列I至J.

c)该第三数据帧由列A和列的K为Y.

我应该如何处理它? (。最好在Python只有某些列值,说明我将显示,如果需要更多。)

回答

1

您可以通过组合使用loc创造新DataFrames与join

df_a_to_g = df.loc[:, 'A':'G'] 
df_a_and_i_to_j = df.loc[:, ['A']].join(df.loc[:, 'I':'J']) 
df_a_and_k_to_y = df.loc[:, ['A']].join(df.loc[:, 'K':'Y']) 

如果你想选择列“数字”你可以使用iloc代替loc

# Select first column and columns 11 through 25. 
# We have to slice with 12:27 because indexing starts with 0, 
# so 12 equals to column number 11. The destination index '27' 
# equals to column 26, from which we have to subtract 1 because 
# the last element is exclusive in numerical slicing. 
df_new = df.iloc[:, [0]].join(df.iloc[:, 12:27]) 
+0

是否有一个地方,我们不必依赖于列名或列的字母位置/索引的替代方式?如果列名的顺序像A,B,I,E,F,H,K等等混杂在一起,我们必须获得三个数据帧,以便第一个数据帧由第1列和第2列到第7,第2个数据帧由第1列和第9-10列组成,第3个数据帧由第1列和第11列至第25列组成。我想你的方法会工作,但我会很高兴,如果我能以某种方式使用列的数字位置/索引。 – dravid07

+0

我已经扩展了我的答案来演示数列切割的列。请记住将来的问题,从一开始就让你的意图清楚,例如, G。通过询问'给定列名A,B,D,Z,J,...我如何提取第5列至第9列?'这会让人们更容易地给你答案,你需要解决你的具体问题 – Milo

+0

我一定会用更好的方式表达我的意图。我带来的不便表示歉意。顺便说一下,在使用'iloc'时,我收到一个错误:'AttributeError:'Series'对象没有'join'属性。 – dravid07

相关问题