Python DataFrame:重新排列对象和空值
Python DataFrame: rearrange the objects and empty values
我有一个 Python DataFrame,其中包含 20000+ 个值,如下所示。我想有效地重新排列 df 与 NaN 在值的字符串之后。
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe NaN NaN rew NaN NaN
1 NaN NaN sdc NaN NaN wer
2 NaN NaN NaN NaN NaN NaN
3 asd fsc ws zd ews df
.....
至
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe rew NaN NaN NaN NaN
1 sdc wer NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 asd fsc ws zd ews df
.....
因此每一行都可以没有像 index = 2 这样的值,或者像 index = 3 这样的所有值。有没有一种方法可以有效地重新排列我的数据帧 df?
提前致谢
一种方式,尽管速度很慢,apply
、dropna
和 tolist
:
df.apply(lambda x: pd.Series(x.dropna().tolist()),1)\
.set_axis(df.columns, axis=1, inplace=False)
输出:
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe rew NaN NaN NaN NaN
1 sdc wer NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 asd fsc ws zd ews df
您可以编写自定义函数对行进行排序,然后用原始顺序的列替换索引(列)。简单地 apply
它到数据帧行
def row_sort(s):
s2 = s.sort_values()
s2.index = s.index
return s2
df.apply(row_sort, axis=1)
# returns:
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe rew NaN NaN NaN NaN
1 sdc wer NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 asd df ews fsc ws zd
我有一个 Python DataFrame,其中包含 20000+ 个值,如下所示。我想有效地重新排列 df 与 NaN 在值的字符串之后。
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe NaN NaN rew NaN NaN
1 NaN NaN sdc NaN NaN wer
2 NaN NaN NaN NaN NaN NaN
3 asd fsc ws zd ews df
.....
至
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe rew NaN NaN NaN NaN
1 sdc wer NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 asd fsc ws zd ews df
.....
因此每一行都可以没有像 index = 2 这样的值,或者像 index = 3 这样的所有值。有没有一种方法可以有效地重新排列我的数据帧 df? 提前致谢
一种方式,尽管速度很慢,apply
、dropna
和 tolist
:
df.apply(lambda x: pd.Series(x.dropna().tolist()),1)\
.set_axis(df.columns, axis=1, inplace=False)
输出:
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe rew NaN NaN NaN NaN
1 sdc wer NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 asd fsc ws zd ews df
您可以编写自定义函数对行进行排序,然后用原始顺序的列替换索引(列)。简单地 apply
它到数据帧行
def row_sort(s):
s2 = s.sort_values()
s2.index = s.index
return s2
df.apply(row_sort, axis=1)
# returns:
IT1 IT2 IT3 IT4 IT5 IT6
0 qwe rew NaN NaN NaN NaN
1 sdc wer NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 asd df ews fsc ws zd