如何分割熊猫数据框?

时间:2019-01-02 10:41:52

标签: python

id  state   city
1   0   0
2   13  9
3   118 2524
4   20  0
5   0   0
6   3   8
7   0   0
8   10  26
9   0   0
10  6   13
11  0   0

我想将数据帧拆分为2。一个将州和城市列设为0,将另一个添加其中的州和城市代码。然后,在获取州和城市为“ 0”的ID的值后,将其附加原始数据帧。

2 个答案:

答案 0 :(得分:0)

AFAIU ,您需要两个数据框(一个的州和城市列为0)和另一个(其中包含州和城市代码)。

import pandas as pd
import numpy as np

columns = ['state','city']
stateList = [0,13,18,20,0,3,0,10,0,6,0]
cityList = [0,9,2524,0,0,8,0,26,0,13,0]


newList = list(zip(stateList,cityList))
data = np.array(newList)
# print(data)
df = pd.DataFrame(data, columns=columns)
df_zero = df.loc[(df['state'] == 0) & (df['city'] == 0)]
print("Printing the zero valued dataframe: ")
print(df_zero)

df_non_zero = df.loc[(df['state'] != 0) & (df['city'] != 0)]
print("Printing the non-zero valued dataframe: ")
print(df_non_zero)

print("Printing the index values of zero valued dataframe: ")
print(df_zero.index.values)

输出: enter image description here

答案 1 :(得分:0)

考虑到数据框的名称为df。第一个为两个零序列,一个为state,第二个为city注意:我只是获取数据框的一些初始值,但它适用于任何大小的数据框。

city = pd.Series(np.zeros(len(df)))
state = pd.Series(np.zeros(len(df)))

现在,像这样从这两个系列制作一个数据框,

df1 = pd.DataFrame()
df1['state_0'] = state.values
df1['city_0'] = city.values
df1

输出:

   state_0  city_0
0   0.0     0.0
1   0.0     0.0
2   0.0     0.0
3   0.0     0.0

然后,制作第二个数据框作为原始数据框

df2 = df
df2

输出:

    state   city
0   0        0
1   13       9
2   118    2524
3   20       0

现在,只需将这两个数据帧连接起来,

df = pd.concat([df1, df2], axis=1)
df

输出:

    state_0 city_0  state   city
0   0.0      0.0      0      0
1   0.0      0.0     13      9
2   0.0      0.0     118    2524
3   0.0      0.0     20      0