Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何交换Dataframe中的特定列值?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何交换Dataframe中的特定列值?

Python 如何交换Dataframe中的特定列值?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个大的数据框,这是数据框的示例部分。 想交换马斯喀特和上海的价值 df = City Score Istanbul 6.0749 2.23607 Muscat Prague 4.38576 1.85958 Shanghai Istanbul 6.0749 Singapore 5.17054 输出: df = City Score Istanbul 6.0749 Muscat 2.23607 Pra

我有一个大的数据框,这是数据框的示例部分。 想交换马斯喀特和上海的价值

 df =
 City   Score

 Istanbul   6.0749
 2.23607    Muscat
 Prague     4.38576
 1.85958    Shanghai
 Istanbul   6.0749
 Singapore  5.17054
输出:

 df = 
 City   Score

 Istanbul   6.0749
 Muscat     2.23607     
 Prague     4.38576
 Shanghai   1.85958     
 Istanbul   6.0749
 Singapore  5.17054
我很困惑,在遍历数据帧后如何应用条件,还有其他选择吗?

您可以使用:

In [39]: mask = pd.to_numeric(df.Score, errors='coerce').isna()

In [40]: s = df.Score.copy()

In [41]: df.Score[mask] = df.City

In [42]: df.City[mask] = s

In [43]: df
Out[43]: 
        City    Score
0   Istanbul   6.0749
1     Muscat  2.23607
2     Prague  4.38576
3   Shanghai  1.85958
4   Istanbul   6.0749
5  Singapore  5.17054
您可以使用:

In [39]: mask = pd.to_numeric(df.Score, errors='coerce').isna()

In [40]: s = df.Score.copy()

In [41]: df.Score[mask] = df.City

In [42]: df.City[mask] = s

In [43]: df
Out[43]: 
        City    Score
0   Istanbul   6.0749
1     Muscat  2.23607
2     Prague  4.38576
3   Shanghai  1.85958
4   Istanbul   6.0749
5  Singapore  5.17054
用于布尔掩码,然后通过以下方式交换:

用于布尔掩码,然后通过以下方式交换:


向上游看一看,看看为什么你的数据是这样进来的,这可能会更好。随着数据集变得越来越大,无论是手动执行还是使用函数i agree@aydow执行,更改值都会变得越来越麻烦。也许你只是对一些重复的分隔符或其他东西有问题。但是,最好证明你的数据是正确的,否则在试图修复数据时,你会冒着丢失数据的风险,不知道是什么原因导致了哪些工件。要点指出……最好向上游看一看,看看为什么你的数据会出现这种情况。随着数据集变得越来越大,无论是手动执行还是使用函数i agree@aydow执行,更改值都会变得越来越麻烦。也许你只是对一些重复的分隔符或其他东西有问题。但是,最好证明你的数据是正确的,否则在试图修复数据时,你会冒着丢失数据的风险,而不知道是什么原因导致了哪些工件。要点指出。。。。。