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的值后,将其附加原始数据帧。
答案 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)
答案 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