繁体   English   中英

Python 更改特定列和行中的 Dataframe 值

[英]Python Change Dataframe Value in Specific Column And Row


我有一个从未格式化的 csv 生成的 dataframe。所以我需要格式化一些数据(例如,有一些字符串为 12.323,03 用于浮点格式,我正在尝试将它们转换为 12323.03 以便将字符串转换为 python 中的浮点数)我正在尝试这样做:
 for column in data: if(data[column].name.= 'blabla' and data[column]:name:= 'otherblabla'): for row_value in data[column]. if type(row_value) == str. float_format = row_value,replace('.',''),replace('.'.',') row_value = row_value.replace(row_value, float_format)

float 格式:将字符串“12.323,03”转换为“12323.03”。 但行值不受影响。 我错过了什么?

要影响新值,您必须使用

df.loc[row_index,column_name] = row_value

为此,请尝试枚举。

对于 row_index,枚举中的 row_value(data_column):

这里有一个例子来理解它:

df = pd.DataFrame({'A':[1,2,3,4],'B':[5,6,7,8]})
print('Before change')
print(df)
for i,j in enumerate(df['B']):
    if j == 6:
        df.loc[i,'B'] = 4
print('Afetr Change')
print(df)

变量row_value是原始 df 中行/列对的单个值,它不引用 df position。正如另一个答案指出的那样,您需要找到该值才能更改 df。

此外,我想提一下,第二个row_value替换可以简单地replacerow_value = float_format 另外,我与您分享了一种使用apply的方法,我认为它更简洁,您可能会发现它很有用:

df = pd.DataFrame(
    {
        'c1': ['100,12', 1.230, '30.000,4'], 
        'c2': ['5.367,46', '10', 7.3],
        'c3': ['a', 'b', 'c']
    }
)

cols = ['c1', 'c2']
for col in cols:
    df[col] = df[col].apply(
        lambda x: float(x.replace('.','').replace(',','.')) if type(x) == str else x
    )

这导致:

         c1       c2 c3
0    100.12  5367.46  a
1      1.23    10.00  b
2  30000.40     7.30  c

c1    float64
c2    float64
c3     object
dtype: object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM